字符串完全匹配

时间:2010-11-13 17:32:19

标签: python string

我有一个字符串,其中“LOCAL”一词多次出现。我使用find()函数来搜索这个单词,但它也返回另一个单词“Locally”。我怎样才能准确匹配“本地”一词?

7 个答案:

答案 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']