因此,我创建了以下正则表达式,该正则表达式从字符串中捕获了我需要的所有内容:
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/