如何为冒号或换行分隔的单词写一个正则表达式标签

时间:2015-04-30 19:48:42

标签: regex

\ w +:\ w + \ s * \ w * \ n - 这是由新行分隔的键值对(由冒号分隔)组合的正则表达式。

以上是两场比赛...... ABC:SSS DEF:GHJ

但是这个正则表达式只允许在单词中首次出现空格/制表符。

有人能告诉我如何避免标签/空格的“全部”出现

编辑:

sports: soccer, tennis   I would like to play all kind of spots
        the spots desc continues...
Food: Indian, Italian, Mexican - I love all three.

如果我们有上面的文字 - 如果我使用正则表达式,我需要获得2场比赛。

  1. 体育:体育文字
  2. 食物:FoodText。

1 个答案:

答案 0 :(得分:0)

此代码应该完全正常工作,假设匹配中的所有嵌入换行符后面紧跟一个选项卡(请注意下面模式中的\ n \ t)。

//Pattern to match the form "Word: some text with embedded newline/tab combos"
const string pattern = @"^\w+:(.|(\n\t))*";

//Get the matching items
MatchCollection matches = Regex.Matches(input, pattern, RegexOptions.Multiline);

//Write out the matches
for (int i = 0; i < matches.Count; i++)
{
    Console.WriteLine("-----MATCH-----");
    Console.WriteLine(matches[i].Value);
    Console.WriteLine();
}

对于您的输入字符串,此代码的输出如下所示:

-----MATCH-----
sports: soccer, tennis   I would like to play all kind of spots
    the spots desc continues...

-----MATCH-----
Food: Indian, Italian, Mexican - I love all three.

请务必不要忘记RegexOptions.Multiline选项;它使^表现为行的开头,而不仅仅是整个字符串的开头。