正则表达式在coldfusion中匹配整个单词串

时间:2015-11-27 15:26:12

标签: regex coldfusion

我正在尝试这个例子

第一个例子

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"); 
}

输出 - >发现它

但我想找到整个单词。标点问题对我来说如何使用正则表达式进行第二个示例输出:没找到它

1 个答案:

答案 0 :(得分:5)

Coldfusion不支持lookbehind,因此,您不能使用真正的“零宽度边界”检查。相反,你可以使用分组(幸运的是前瞻):

regEx = "(^|\W)"& keyword &"(?=\W|$)";

此处,(^|\W)匹配字符串的开头,(?=\W|$)确保存在非单词字符(\W)或字符串结尾({{1} }})。

请参阅the regex demo

但是,请确保在传递给正则表达式之前转义关键字。请参阅ColdFusion 10 now provides reEscape() to prepare string literals for native RE-methods

另一种方法是匹配空格或字符串的开头/结尾:

$