正则表达式匹配特定单词后跟另一个单词以及边界标识符

时间:2015-01-01 07:58:25

标签: python regex text

我在Python中进行正则表达式匹配。我试图遵循一些组合,但没有工作。我是正则表达式的新手。我的问题是,我有一个字符串如下。

string = ''' World is moving towards a particular point'''

我想要一个解决方案来检查是否"朝向"在"移动"之后立刻出现如果是这样,我想选择剩余的一行(在'朝向'之后),直到它以'结束。或者' - '。我是新手。请提供一些好的建议。

4 个答案:

答案 0 :(得分:6)

这样的东西
re.findall (r'(?<=moving towards )[^-.]*', string)
['a particular point']
  • (?<=moving towards )看待断言。断言字符串前面有moving towards

  • [^-.]*匹配-.

  • 以外的任何内容

如何匹配

World is moving towards a particular point
                        |
     (?<=moving towards ) #checks if this position is presceded by moving towards 
                          #yes, hence proceeds with the rest of the regex pattern

World is moving towards a particular point
                        |
                      [^-.]

World is moving towards a particular point
                         |
                       [^-.] 

# and so on


World is moving towards a particular point
                                         |
                                       [^-.]

Regex Demo

答案 1 :(得分:1)

您需要使用negative-look around。但是当你的字符串中有.-时你可以使用@ nu11p01n73R的答案。 :

>>> string = ''' World is moving towards a particular point.'''
>>> re.search(r'(?<=moving towards).*(?=\.|-)',string).group(0)
' a particular point'

(?<=moving towards).*moving towards

之后是负面后卫匹配全部(。*)

(?=\.|-)'是与之前所有匹配的负面观察(\.|-),这意味着.-

Regular expression visualization

Debuggex Demo

答案 2 :(得分:1)

import re
str = ''' World is moving towards a particular point'''
match = re.search('moving towards\s+([^.-]+)', str)
if match:
   var = match.group(1)

Output >>> a particular point     

regex调试链接

https://www.regex101.com/r/wV7iC7/1

答案 3 :(得分:0)

要重复这个问题,您需要检查在给定的string字词中是否&#34;移动&#34;然后是#34;朝向&#34;。以下是使用parse模块执行此操作的方法:

import parse
string = "World is moving towards a particular point"

fmt = "moving {:w}"

result = parse.search(fmt, string)

assert result[0] == "towards"

请注意,:w格式规范会导致结果与字母和下划线匹配。