在正则表达式匹配中保留换行符,c#

时间:2014-03-12 09:57:55

标签: c# regex

所以,我创建了以下正则表达式,它从我的字符串中捕获了我需要的一切:

  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:,但可能是其他的。

1 个答案:

答案 0 :(得分:2)

您可以使用以下代码来匹配您需要的内容:

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;