以=符号结尾的单词之间的正则表达式匹配(LAN =和TYP =)

时间:2014-03-13 16:51:29

标签: regex c#-4.0 equals-operator

您好我正在尝试创建一个匹配两个单词之间所有单词的正则表达式。 到目前为止我的工作是:

 public static String GetTextBetween(String source, String leftWord, String rightWord)
    {
        return
            Regex.Match(source, String.Format(@"{0}\b\s(?<words>[\w\s]+)\s{1}", leftWord, rightWord),
            RegexOptions.IgnoreCase).Groups["words"].Value;

    }

文本文档包含以下内容:

TYP = 123456789_AD1

DES = xyzer

TXT = bXper xyer

TXT = C

Lorem ipsum dolor坐下来,这是一种不可或缺的精神。 Aenean commodo ligula eget dolor。 Aenean massa。 Cum sociis natoque penatibus et magnis dis parturient montes

TXT = dsome text

TXT = e some text

TXT = I

如你所见,有时文字就在文字后面(leftWord和rightWord) 我正在努力解决这个问题。

1 个答案:

答案 0 :(得分:0)

问题在于&#39; \ b&#39;这是一个单词边界。这只会在字符串的最后一个字符后匹配,如果该字符串中的最后一个字符是&#39;单词&#39;字符。由于&#39; =&#39;不是单词字符,因此匹配失败。

@"{0}\s(?<words>[\w\s]+)\s{2}"

删除\ b应该可以正常工作,或者如果由于某种原因需要保留它,请使用[\ b \ s]。