我有一个字符串,其中“LOCAL”一词多次出现。我使用find()
函数来搜索这个单词,但它也返回另一个单词“Locally”。我怎样才能准确匹配“本地”一词?
答案 0 :(得分:38)
对于这种事情,regexp非常有用:
import re
print(re.findall('\\blocal\\b', "Hello, locally local test local."))
// ['local', 'local']
\ b基本上是指单词边界。可以是空格,标点符号等。
编辑评论:
print(re.sub('\\blocal\\b', '*****', "Hello, LOCAL locally local test local.", flags=re.IGNORECASE))
// Hello, ***** locally ***** test *****.
如果你不想忽略这种情况,你可以删除flags = re.IGNORECASE。
答案 1 :(得分:9)
下面你可以使用简单的功能。
def find_word(text, search):
result = re.findall('\\b'+search+'\\b', text, flags=re.IGNORECASE)
if len(result)>0:
return True
else:
return False
使用:
text = "Hello, LOCAL locally local test local."
search = "local"
if find_word(text, search):
print "i Got it..."
else:
print ":("
答案 2 :(得分:2)
正则表达式搜索\ blocal \ b
\ b是一个“单词边界”,它可以包括行的开头,行的结尾,标点符号等。
您还可以不敏感地搜索大小写。
答案 3 :(得分:2)
您可以使用正则表达式来约束在单词边界处发生的匹配,如下所示:
import re
p = re.compile(r'\blocal\b')
p.search("locally") # no match
p.search("local") # match
p.findall("rty local local k") # returns ['local', 'local']
答案 4 :(得分:2)
line1 = "This guy is local"
line2 = "He lives locally"
if "local" in line1.split():
print "Local in line1"
if "local" in line2.split():
print "Local in line2"
只有line1匹配。
答案 5 :(得分:1)
寻找'本地'?请注意,Python区分大小写。
答案 6 :(得分:1)
使用Pyparsing:
import pyparsing as pp
def search_exact_word_in_string(phrase, text):
rule = pp.ZeroOrMore(pp.Keyword(phrase)) # pp.Keyword() is case sensitive
for t, s, e in rule.scanString(text):
if t:
return t
return False
text = "Local locally locale"
search = "Local"
print(search_exact_word_in_string(search, text))
收益率:
['Local']