我正在尝试这个例子
第一个例子
keyword = "star";
myString = "The dog sniffed at the star fish and growled";
regEx = "\b"& keyword &"\b";
if (reFindNoCase(regEx, myString)) {
writeOutput("found it");
} else {
writeOutput("did not find it");
}
示例输出 - >发现它
第二个例子
keyword = "star";
myString = "The dog sniffed at the .star fish and growled";
regEx = "\b"& keyword &"\b";
if (reFindNoCase(regEx, myString)) {
writeOutput("found it");
} else {
writeOutput("did not find it");
}
输出 - >发现它
但我想找到整个单词。标点问题对我来说如何使用正则表达式进行第二个示例输出:没找到它
答案 0 :(得分:5)
Coldfusion不支持lookbehind,因此,您不能使用真正的“零宽度边界”检查。相反,你可以使用分组(幸运的是前瞻):
regEx = "(^|\W)"& keyword &"(?=\W|$)";
此处,(^|\W)
匹配字符串的开头,(?=\W|$)
确保存在非单词字符(\W
)或字符串结尾({{1} }})。
但是,请确保在传递给正则表达式之前转义关键字。请参阅ColdFusion 10 now provides reEscape() to prepare string literals for native RE-methods。
另一种方法是匹配空格或字符串的开头/结尾:
$