正则表达式在多个空格后查找单词

时间:2015-01-02 08:28:23

标签: python regex text

我想在文本文件中找到另一个单词之后的单词。如果它后跟'one'空格,我能找到这个词。那是

string = 'I love my world of dreams'
print re.findall (r'(?<=my)[^ -.]*', string)

这使我的输出为

[world].

但是,如果“my”之后有多个空格或多个空格,

string = 'I love my        world of dreams'

这只会让我回复''。我想跳过所有空格,找到“my”之后的下一个单词。

3 个答案:

答案 0 :(得分:1)

您可以使用\s+(匹配所有空格)或' +'但是因为后视需要固定宽度模式,您需要将它放在后视之外并使用分组也可以使用re.search: :

>>> string = 'I love my           world of dreams'
>>> print re.search (r'(?<=my)\s+([^ -.]*)', string).group(1)
world

>>> string = 'I love my           world of dreams'
>>> print re.search (r'(?<=my) +([^ -.]*)', string).group(1)
world

答案 1 :(得分:0)

Lookbehinds无法进行无限长度匹配。您必须在my之后匹配整个事物并提取子组:

my\s*([^ -.]+)

Regular expression visualization

Debuggex Demo

答案 2 :(得分:0)

尝试使用fileinput读取文件中的行。假设文件的每一行都存储在字符串str123中。现在,以下代码将帮助您......

>>>
>>> str123 = ' This is a very long  space in the text'
>>> pqr123 = str123.split()

>>>
>>> nextword = ''
>>> for i in range(len(pqr123)):
...     nextword = pqr123[i]
...     print ('nextword :'+ nextword + '\n')
...
nextword :This

nextword :is

nextword :a

nextword :very

nextword :long

nextword :space

nextword :in

nextword :the

nextword :text

>>>

字符串'这是文本中的一个很长的空格'在空格之间有2个空格。