【问题标题】:Capturing text between two words using a regular expression使用正则表达式捕获两个单词之间的文本
【发布时间】:2012-07-20 07:49:34
【问题描述】:

我正在尝试使用 CSharp 中的正则表达式来获取两个关键字之间的文本。 虽然我已经找到了一个标题相同的主题,但那个主题是关于在方括号之间查找文本,这相当容易,因为您可以使用 \[(?<blah>[^\]]+?)\] 来做到这一点。

我想做的是在UnMatched text 123./!team 中找到单词Matched text 123./!。所以我的分隔符是Unteam。如果我要按照我习惯的方式构建我的 RegEx,我需要再次执行三个部分:Un 用于开头的起始分隔符,team 用于结尾的结束分隔符和一组 (?<blah>...+?)说“除了字符串team之外的任何东西”。但我不知道如何用正则表达式表达 this

有没有办法说“不是这个字符串”而不是“不是那些字符之一”? 另外,由于我不知道正则表达式的实现之间的差异:我正在使用 .NET-Framework 的System.Text.RegularExpressions.RegEx 来解析它们,因此示例当然应该与此实现一起使用。

【问题讨论】:

    标签: c# .net regex


    【解决方案1】:

    您可以使用这种语法

    (?s)(?<=start_delim).+?(?=end_delim)
    

    只需根据需要替换 start_delimend_delim。有关这方面的更多信息,请访问here

    【讨论】:

    • 一个更容易阅读的模式是Un(.+)team。然后,想要的部分在 Matches[0].Groups[0].Value(如果存在)中。
    猜你喜欢
    • 2020-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-18
    相关资源
    最近更新 更多