我正在尝试子搜索
>>>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。我做错了什么?
答案 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
岩石。