繁体   English   中英

Python使用正则表达式和用户输入查找字符串中的整个单词

[英]Python Find entire word in string using regex and user input

我正在尝试使用正则表达式查找整个单词,但是我正在搜索的单词是来自用户输入的变量值。 我已经试过了:

regex = r"\b(?=\w)" + re.escape(user_input) + r"\b"
if re.match(regex, string_to_search[i], re.IGNORECASE):
      <some code>...

但它匹配每次出现的字符串。 它匹配正确的“ var”->“ var”,但也匹配“ var”->“ var” iable,我只希望它匹配“ var”->“ var”或“ string”->“ string”

输入:“剑”

String_to_search =“曾经有位造剑的剑匠”

所需的输出:将“ sword”匹配到“ sword”,而不是“ swordsmith”

您可以像这样尝试re.finditer:

>>> import re
>>> user_input = "var"
>>> text = "var variable var variable"
>>> regex = r"(?=\b%s\b)" % re.escape(user_input)
>>> [m.start() for m in re.finditer(regex, text)]
[0, 13]

它将迭代找到所有匹配项。

您似乎想使用与整个字符串匹配的模式。 请注意,当您想查找部分匹配项时,需要\\b字边界。 如果需要完整的字符串匹配,则需要anchors 由于re.match将匹配re.match锚定在字符串的开头,因此您所需要的就是$ (字符串结尾的位置)在模式的末尾:

regex = '{}$'.format(re.escape(user_input))

然后使用

re.match(regex, search_string, re.IGNORCASE)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM