![](/img/trans.png)
[英]Find the last word of the sentence if it is already present before using Regular expression
[英]find a word in a sentence using regular expression
因此,我试图在一个句子中找到一个词(完整的词)。 可以说这句话是
Str1 = "1. how are you doing"
而且我有兴趣寻找是否
Str2 = "1."
在里面。 如果我做,
re.search(r"%s\b" % Str2, Str1, re.IGNORECASE)
应该说找到了匹配项,不是吗? 但是此查询的re.search
失败。 为什么?
这里有两件事是错误的:
\\b
匹配单词和非单词字符之间的位置,因此匹配任何字母,数字或下划线以及与该字符集不匹配的字符之间的位置。
您正在尝试匹配之间的边界.
和一个空间; 两者都是非单词字符, \\b
锚永远不会匹配。
您正在移交re
一个1.
,这意味着“匹配1
和任何其它字符”。 您需要使用re.escape()
来匹配文字,从而对点进行转义.
。
以下效果更好:
re.search(r"%s(?:\s|$)" % re.escape(Str2), Str1, re.IGNORECASE)
现在,它将按字面值匹配您的输入,并寻找以下空格或字符串的结尾。 (?:...)
创建一个非捕获组(除非您特别需要捕获比赛的各个部分,否则总是一个好主意); 组内有一个|
管道有两种选择; 匹配\\s
(空格)或$
(行尾)。 您可以根据需要扩展它。
演示:
>>> import re
>>> Str1 = "1. how are you doing"
>>> Str2 = "1."
>>> re.search(r"%s(?:\s|$)" % re.escape(Str2), Str1, re.IGNORECASE)
<_sre.SRE_Match object at 0x10457eed0>
>>> _.group(0)
'1. '
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.