我在Python中进行正则表达式匹配。我试图遵循一些组合,但没有工作。我是正则表达式的新手。我的问题是,我有一个字符串如下。
string = ''' World is moving towards a particular point'''
我想要一个解决方案来检查是否"朝向"在"移动"之后立刻出现如果是这样,我想选择剩余的一行(在'朝向'之后),直到它以'结束。或者' - '。我是新手。请提供一些好的建议。
答案 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
|
[^-.]
答案 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
和(?=\.|-)'
是与之前所有匹配的负面观察(\.|-
),这意味着.
或-
答案 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
格式规范会导致结果与字母和下划线匹配。