0

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

 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 sit amet,consectetuer adipiscing elit。Aenean commodo ligula eget dolor。埃涅马萨。Cum sociis natoque penatibus et magnis disparturient montes

TXT=dsome 文本

TXT=e 一些文字

TXT=我

如您所见,有时文本就在单词(leftWord 和 rightWord)之后,而我正在努力解决这个问题。

4

1 回答 1

0

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

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

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

于 2014-03-13T17:10:49.443 回答