【发布时间】:2012-10-03 16:25:50
【问题描述】:
我的正则表达式可以很好地匹配单词,除非它们包含特殊字符,例如
~Query 是 C++ 类成员的名称。
对于单个字符的成员名称,需要使用如下所示的单词边界。
$key =~ /\b$match\b/
我尝试了许多我认为可行的表达式,例如 /[~]*\b$match\b/ 或 /\b[~]*$match\b/
是否可以在可能包含特殊字符的单词上设置单词边界?
【问题讨论】:
-
你能准确发布你想要匹配的内容吗?正则表达式是针对特定情况生成的,而不仅仅是假设你的字符串是什么……
-
/~\b$match\b/应该匹配~Query,假设包含在$match中的正则表达式将匹配Query。 (我刚刚测试过," ~foo " =~ /~\bfoo\b/评估为 true。) -
$match 变量可能包含 ~Query、Query 或单个字母,例如 p。开发人员可能会为他们的类方法使用任何其他奇怪的名称。正则表达式是进行搜索的子例程的一部分。一切正常,除非 $match 包含 ~Query。