代码之家  ›  专栏  ›  技术社区  ›  Ricky Kim

已知短语前后的正则表达式条件

  •  2
  • Ricky Kim  · 技术社区  · 6 年前

    我试图捕捉一个以两个已知短语之间的大写字母开头的短语。让我们在“已知短语”和“the”之间进行比较。

    Stuff TO CApture That always start with Capital letter but stop capturing when

    忽略已知短语的单词,忽略要捕获的随机短语内容,这些内容始终以大写字母开头,但在出现时停止捕获。

    Regex我试过: (?<=Known phrase, ).*(?= The) Known phrase, (.*) The ignore random phrase

    3 回复  |  直到 6 年前
        1
  •  2
  •   The fourth bird    6 年前

    Known phrase, [a-z ]+([A-Z].*?) The

    regex demo

    解释

    • Known phrase,
    • [a-z ]+
    • ([A-Z].*?) 在与大写字符后跟0+乘以除换行符以外的任何字符相匹配的组中捕获。
    • The
        2
  •  2
  •   zworek    6 年前

    我想,由于正则表达式是左侧贪婪的,所以应该首先尝试匹配任何非大写字母的内容

    /Start[^A-Z]*(.*)stop/ [^A-Z] 匹配任何非大写字母的内容)

    regex101 demo

        3
  •  1
  •   massi    6 年前

    (?<=Known phrase, )([^A-Z]*)(.*)(?=The) 应该这样做:你需要的文本在第2组中。
    如果您需要匹配所有内容,只需更改为 (.*)(?<=Known phrase, )([^A-Z]*)(.*)(?=The)(.*) 并在第3组中获取您的文本。