我正在使用python RE库(http://docs.python.org/2/library/re.html)。我正在尝试搜索字符串中的各种子字符串。我有以下功能:
def checkformatch(search_str):
to_find = re.compile("yes|[ +y +]|[^y +]")
match_obj = to_find.search(search_str)
which_word_matched = match_obj.group() if match_obj else ''
return which_word_matched
搜索字符串看起来像:
search_str = "blah fish cat dog yes haha y no"
我想检查一个单词'y'(表示是)或是
前两个选项:
re.compile("yes|[^y +]|[ +y +]")
工作,但第三个没有。有人能帮助我吗?
编辑:我正在使用re.compile,因为它能够使用'|'运营商。我可能需要选择在将来搜索“bob”或“what is up”等附加字符串,我认为这种结构会给我“成长空间”。有更好的方法吗?答案 0 :(得分:2)
答案 1 :(得分:1)
要查找yes
或y
的实例,您可能需要一个如下所示的正则表达式:
re.compile(r'\b(yes|y)\b')
即,字边界之间的yes
或y
(例如空格)
您的正则表达式(yes|[^y +]|[ +y +]
)符合以下任何一项:
换句话说,它匹配任何单个字符,这可能不是你想要的。
比照使用re.DEBUG
编译正则表达式的输出:
branch
literal 121 # y
literal 101 # e
literal 115 # s
or
in
negate None
literal 121 # y
literal 32 # <space>
literal 43 # +
or
in
literal 32 # <space>
literal 43 # +
literal 121 # y
literal 32 # <space>
literal 43 # +