c# - 在 C# 中使用正则表达式匹配多行

标签 c# regex

我有以下文字:

--------------030805090908050805080502
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-ID: <part16.07030906.00090703@highcontrast.ro>

/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAARgAA/+4ADkFkb2JlAGTAAAAA
/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAARgAA/+4ADkFkb2JlAGTAAAAA
QBQH/9k=
--------------030805090908050805080502
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-ID: <part17.07010805.02020809@highcontrast.ro>

/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAARgAA/+4ADkFkb2JlAGTAAAAA
/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAARgAA/+4ADkFkb2JlAGTAAAAA
juu41lRHFLufPCAID//Z
--------------030805090908050805080502--

我需要在 C# 2 部分中使用正则表达式:

  1. 在字符串 "--------------030805090908050805080502" 的第一次和第二次出现之间
  2. 在字符串之间"--------------030805090908050805080502""--------------030805090908050805080502--"

我试过这个正则表达式:

--------------030805090908050805080502(\r.*)*--------------030805090908050805080502

但在 C# 中 regex.Matches(...)仅返回 "--------------030805090908050805080502" .

最佳答案

MatchCollection matches = Regex.Matches( text, @"([-]+\d{24})
                                                 (?<Content>.*?)
                                                 (?=\1)", 
                                         RegexOptions.IgnorePatternWhitespace | 
                                         RegexOptions.Singleline );

foreach ( Match match in matches )
{
    Console.WriteLine( 
        string.Format( "match: {0}\n\n", 
                       match.Groups[ "Content" ].Value ) );
}

更新:此表达式将查找两次出现的数字之间的所有匹配项。如果数字需要是一个特定的数字,而不是任何 24 位数字,请将“\d{24}”更改为您要匹配的数字。

关于c# - 在 C# 中使用正则表达式匹配多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2641242/

相关文章:

C# 在不知道文件格式的情况下读取二进制文本文件

c# - 无法让自己的主机在 NServiceBus 上工作

c# - 为 CSharpCompilation.Emit 指定框架版本

c# - 隐藏部分面板C#

regex - 使用sed从文件中提取单词

Javascript 正则表达式在特定单词或数字后分割

java - 替换java字符串中的正则表达式,其中包含 `&#xA;`符号

ios - 使用 NSMutableAttributedString 和正则表达式将特定文本替换为图像

javascript - 正则表达式以字母开头和结尾,允许逗号和破折号

c# - 重命名文档工作区