正则表达式在多个空格后查找单词
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*([^ -.]+)
尝试使用 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=].
我试图在文本文件中逐字查找。如果后面跟着 '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*([^ -.]+)
尝试使用 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=].