首页 文章

尝试在python中匹配字符串中两个字符系列中的第一个

提问于
浏览
2

试图匹配字符串中由噪声字符分隔的“foo”或“bar”的第一个实例,例如“basdldfnmewoor”,它应该首先与'bar'匹配,重点强调:“basdldFnmewOOr”

它保证包含“foo”或“bar”中的一个或两个,所有垃圾字符都是[a-z]

这是我的正则表达式/函数 .

def first_foobar(mystring):
    foo = re.search("\w*?(f)\w*?(o)\w*?(o)|\w*?(b)\w*?(a)\w*?(r)",mystring)
    if foo.group(1) == "f":
        return("foo")
    else:
        return("bar")

我在这做错了什么?是否有更多的pythonic方式来做到这一点?它似乎永远不会匹配|后的第二个正则表达式

1 回答

  • 1
    def first_foobar(mystring):
        foo = re.search("\w*?(f)\w*?(o)\w*?(o)|\w*?(b)\w*?(a)\w*?(r)",mystring)
        if foo.group(1) == "f":
            return("foo")
        elif foo.group(4) == "b":
            return("bar")
    

    bar 中的 b 将在 4th 组中

相关问题