如何在字符串中搜索单词(完全匹配)?

时间:2011-10-03 23:22:09

标签: python string search

我正在尝试子搜索

>>>str1 = 'this'
>>>str2 = 'researching this'
>>>str3 = 'researching this '

>>>"[^a-z]"+str1+"[^a-z]" in str2
False

>>>"[^a-z]"+str1+"[^a-z]" in str3
False

在str3中查看时我想要True。我做错了什么?

6 个答案:

答案 0 :(得分:6)

你想要Python的re模块:

>>> import re
>>> regex = re.compile(r"\sthis\s") # \s is whitespace
>>> # OR
>>> regex = re.compile(r"\Wthis\W")
>>> # \w is a word character ([a-zA-Z0-9_]), \W is anything but a word character
>>> str2 = 'researching this'
>>> str3 = 'researching this '
>>> bool(regex.search(str2))
False
>>> regex.search(str3)
<_sre.SRE_Match object at 0x10044e8b8>
>>> bool(regex.search(str3))
True

我有预感你实际上在寻找“this”这个词,而不是“this”,周围有非单词字符。在这种情况下,您应该使用单词边界转义序列\b

答案 1 :(得分:1)

看起来你想使用正则表达式,但是你使用普通的字符串方法。您需要使用re module中的方法:

import re
>>> re.search("[^a-z]"+str1+"[^a-z]", str2)
>>> re.search("[^a-z]"+str1+"[^a-z]", str3)
<_sre.SRE_Match object at 0x0000000006C69370>

答案 2 :(得分:0)

我认为in不进行正则表达式搜索。

查看re模块。

目前还不清楚你究竟想做什么,但如果你想知道“这个”是否在“研究这个”,请执行:

"this" in "researching this"

(或)

str1 in str3

或者,如果您只想将其作为整个单词找到,请执行以下操作:

"this" in "researching this".split()

结果是它将“研究这个”分成["researching", "this"],然后检查其中的确切单词“this”。所以,这是错误的:

"this" in "researching thistles".split()

答案 3 :(得分:0)

对于Python中的正则表达式,请使用re模块:

>>> import re
>>> re.search("[^a-z]"+str1+"[^a-z]", str2) is not None
False
>>> re.search("[^a-z]"+str1+"[^a-z]", str3) is not None
True

答案 4 :(得分:0)

import re
str1 = 'this'
str2 = 'researching this'
str3 = 'researching this '

if re.search("[^a-z]"+str1+"[^a-z]", str2):
    print "found!"

if re.search("[^a-z]"+str1+"[^a-z]", str3):
    print "found!"

答案 5 :(得分:0)

使用re模块。 re模块是您应该使用的模块。 re岩石。