因此,我创建了以下正则表达式,它可以从字符串中捕获我需要的所有内容:
const string tag = ":59";
var result = Regex.Split(message, String.Format(":{0}[^:]?:*[^:]*", tag),RegexOptions.Multiline);
字符串遵循以下模式:
:59A:/sometext\n
somemore text\n
:71A:somemore text
我试图捕捉 :59A: 和 :71A: 之间的所有内容 - 但这并不是一成不变的,因为 :71A: 可能是其他东西。因此,为什么我使用 [^:]
编辑
所以,只是为了明确我的要求。我有一个文件(字符串),它被传递到 C# 方法中,该方法应该仅返回参数标记中指定的那些值。例如,如果文件(字符串)包含以下标签:
:20: :21: :59A: :71A:
如果我传入 59,那么我只需要返回标签开头 :59A: 和下一个标签开头之间的所有内容,在本例中为 :71A:,但也可能是其他内容。
最佳答案
您可以使用以下代码来匹配您的需要:
string input = ":59A:/sometext\nsomemore text\n:71A:somemore text";
string pattern = "(?<=:[^:]+:)[^:]+\n";
var m = Regex.Match(input, pattern, RegexOptions.Singleline).Value;
如果你想使用你的标签常量,你可以使用这段代码
const string tag = ":59";
string input = ":59A:/sometext\nsomemore text\n:71A:somemore text";
string pattern = String.Format("(?<={0}[^:]*:)[^:]+\n", tag);
var m = Regex.Match(input, pattern, RegexOptions.Singleline).Value;
关于c# - 在正则表达式匹配中保留换行符,c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22347795/