此reg exp搜索将正确检查字符串是否包含以下文本:
re.search(r'\bharry\b','[harry] blah',re.IGNORECASE)
但是,我需要确保字符串包含[harry]。我试过用不同数量的反斜杠逃跑:
re.search(r'\b\[harry\]\b','[harry] blah',re.IGNORECASE)
re.search(r'\b\\[harry\\]\b','[harry] blah',re.IGNORECASE)
re.search(r'\b\\\[harry\\\]\b','[harry] blah',re.IGNORECASE)
这些解决方案都找不到匹配项。我需要做什么?
谢谢!
它的转义方式与大多数regex元字符的转义方式相同:前面是反斜杠。
因此,
r"\[harry\]"
将匹配文本字符串[harry]
。问题在于模式中的
\b
。这是单词边界锚。\b
匹配:\w
和非单词字符\W
之间(注意大小写差异)括号
[
和]
不是单词字符,因此如果字符串以[
开头,则其左侧没有\b
。任何没有\b
的地方,都有\B
代替(注意大小写的不同)。参考文献
问题是
\b
,而不是括号。一个反斜杠是正确的转义。第一个是正确的:
但这与
[harry] blah
不匹配,因为[
不是单词字符,因此没有单词边界。它只在[
前面有一个单词字符时匹配,就像foobar[harry] blah
中一样。相关问题 更多 >
编程相关推荐