我有以下文字:
--------------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 部分中使用正则表达式:
- 在字符串
"--------------030805090908050805080502"
的第一次和第二次出现之间 - 在字符串之间
"--------------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/