有一个在我想要搜索使用正则表达式的特定词的字符串。不过问题是,我的字内获得空白字符。因此,根据下面的例子我想搜索所有的俄克拉何马州和堪萨斯州,但有空间在这两个词。这是不能确定在何处以及有多少空间将出现在搜索词,它可以在任何地方。
有没有办法,我可以搜索一个词或名称忽略内的任何空间呢?
我的字符串:
Texas West South M i rando North Okl ahoma
N.W. K ansas LLS\r\n K an sas
Panhandle Texas Texas Oklaho ma Texas
Panhandle Oklahoma Kan sas
所需的输出:
Oklahoma
Kansas
Kansas
Oklahoma
Oklahoma
Kansas
import re
string = '''Texas West South M i rando North Okl ahoma
N.W. K ansas LLS\r\n K an sas
Panhandle Texas Texas Oklaho ma Texas
Panhandle Oklahoma Kan sas'''
words = ['Kansas', 'Oklahoma']
pattern = '|'.join(r'\s*'.join(word) for word in words)
print(pattern)
print(re.findall(pattern, string))
输出:
K\s*a\s*n\s*s\s*a\s*s|O\s*k\s*l\s*a\s*h\s*o\s*m\s*a
['Okl ahoma', 'K ansas', 'K an sas', 'Oklaho ma', 'Oklahoma', 'Kan sas']