【问题标题】:regex match between words ending with = sign (LAN= and TYP=)以 = 符号结尾的单词之间的正则表达式匹配(LAN= 和 TYP=)
【发布时间】:2014-04-18 14:14:48
【问题描述】:

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

 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=i

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

【问题讨论】:

    标签: regex c#-4.0 equals-operator


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-02
      • 2016-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-21
      相关资源
      最近更新 更多