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

时间:2018-12-13 17:05:32

标签: python regex

我正在尝试捕获一个以2个已知短语之间的大写字母开头的短语。让我们在“已知短语”和“ The”一词之间说。

例如在下面的文本中,我要捕获的短语是:Stuff TO CApture That always start with Capital letter but stop capturing when

  

忽略已知单词,忽略随机短语填充对象始终以大写字母开头,但在出现The时停止捕获。

我尝试过的正则表达式:(?<=Known phrase, ).*(?= The)Known phrase, (.*) The 这些正则表达式还捕获ignore random phrase。我该如何忽略呢?

3 个答案:

答案 0 :(得分:2)

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

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

regex101 demo

答案 1 :(得分:2)

对于示例数据,您可以使用:

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

请参见regex demo

说明

  • Known phrase,字面上匹配
  • [a-z ]+匹配1次以上的小写字符或空格(将大写字符除外的字符添加到字符类中)
  • ([A-Z].*?)捕获与大写字符匹配的组,然后用0+倍除换行符的任何字符。
  • The字面上匹配

答案 2 :(得分:1)

我不确定您要做什么,但是尝试坚持使用代码,(?<=Known phrase, )([^A-Z]*)(.*)(?=The)应该可以解决问题:您需要的文本在第2组中。
如果您需要匹配所有内容,只需更改为(.*)(?<=Known phrase, )([^A-Z]*)(.*)(?=The)(.*)并将您的文本放在第3组即可。