【问题标题】:Python regex to find sequences matching: word + whitespace + wordPython正则表达式查找匹配的序列:单词+空格+单词
【发布时间】:2019-05-06 13:44:52
【问题描述】:

我是使用正则表达式的新手,并且一直在尝试找出一种方法来选择列表中包含两个由空格分隔的单词的元素。

我有以下虚拟列表: ['word

我只想匹配元素 3 ('word two

我尝试过使用:\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)

【问题讨论】:

    标签: python regex


    【解决方案1】:

    要匹配以 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 + whitespace(s) + word char 的字符串,请将 re.match 替换为 re.search,您甚至可以使用 r'\w\s+\w'。或者,如果你真的需要检查单词边界,r'\b\w+\s+\w+\b'

    【讨论】:

      猜你喜欢
      • 2013-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-12
      • 2017-12-24
      • 2015-09-24
      • 1970-01-01
      相关资源
      最近更新 更多