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

Regular expression to find a word after multiple spaces

我试图在文本文件中逐字查找。如果后面跟着 'one' space,我就能找到这个词。即

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

这使我的输出为

[world].

但是如果"my"like这个词后有多个space或者多个spaces,

string = 'I love my        world of dreams'

这 return 我只会“ ”。我想跳过所有 space 并找到单词 "my" 之后的下一个单词。

您可以使用 \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

后视不能有无限长的匹配项。您必须在 my 之后匹配整个内容并提取子组:

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

Debuggex Demo

尝试使用 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

>>>

字符串 'This is a very long space in the text' 在 long[= 之间有 2 spaces 19=].