首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python使用regex和用户输入查找字符串中的整个单词。

Python使用regex和用户输入查找字符串中的整个单词。
EN

Stack Overflow用户
提问于 2017-08-15 15:49:15
回答 2查看 2K关注 0票数 0

我试图使用regex找到整个单词,但是我要搜索的单词是来自用户输入的变量值。我试过这个:

代码语言:javascript
复制
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_to_search =“曾经有一个造剑的剑匠”

预期输出:将“剑”与“剑”匹配,而不是“剑匠”。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-15 16:54:57

您似乎希望使用与整个字符串匹配的模式。注意,在查找部分匹配时,需要\b单词边界。当您需要一个完整的字符串匹配,您需要锚。由于re.match在字符串的开头锚定匹配,所以您只需要在模式末尾的$ (字符串的结束位置):

代码语言:javascript
复制
regex = '{}$'.format(re.escape(user_input))

然后使用

代码语言:javascript
复制
re.match(regex, search_string, re.IGNORCASE)
票数 2
EN

Stack Overflow用户

发布于 2017-08-15 15:59:07

您可以这样尝试re.finditer:

代码语言:javascript
复制
>>> 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]

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45696522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档