Python正则表达式查找匹配的序列:单词+空格+单词

时间:2019-05-06 13:44:52

标签: python regex

我对使用正则表达式并不陌生,并且一直在尝试找出一种选择列表元素的方法,该元素包含由空格分隔的两个单词。

我有以下虚拟列表: ['word <= 0.02','word_one <= 0.04','word第二<= 0.01']

我只希望匹配元素3(“单词2 <= 0.01”)

我尝试使用:\ b \ w +(?= \ s)\ b从堆栈溢出中切出其他相关问题,从中找出点滴。我知道这是行不通的,因为在第二个单词之后(在<=之前)有空格,但是我只是想找出解决方法。

这是我的代码示例:

example_list = ['word <= 0.02', 'word_one <= 0.04', 'word two <= 0.01']

new_list = []

regex = '\b\w+(?=\s)\b'

for i in example_list:
    if re.match(regex, i):
        new_list.append(i)

print(new_list)

1 个答案:

答案 0 :(得分:2)

要匹配以1+个单词字符开头,然后是1+个空格和一个单词字符开头的字符串,您可以使用

import re
example_list = ['word <= 0.02', 'word_one <= 0.04', 'word two <= 0.01']
new_list = []
regex = r'\w+\s+\w+\b'
for i in example_list:
    if re.match(regex, i):
        new_list.append(i)
print(new_list)
# => ['word two <= 0.01']

请参见Python demo

注意re.match已经将匹配项锚定在字符串的开头,因此上述正则表达式中没有^。另外,当您使用常规字符串文字时,模式中的\b是退格字符,而不是单词边界模式。

如果您需要匹配在字符串中任何地方包含单词char +空格+单词char的字符串,请将re.match替换为re.search,甚至可以使用r'\w\s+\w'。或者,如果您确实需要检查单词边界,请r'\b\w+\s+\w+\b'