0

我正在尝试替换字符串中以 @ 开头的任何单词...

我尝试了许多变体,但似乎都没有工作......

rereplace(getMessages.term, "[\s]?\B@\w+", "", "ALL")

有什么建议么?

4

1 回答 1

3

CF 的内置正则表达式不支持后视,这是您实现这一目标所需的(因为您想在 @ 的“后面”(之前)查看并验证存在/不存在的内容,而不将其包含在您的匹配)。

但是,您可以轻松地使用 Java,以利用 Java 的正则表达式支持(它确实支持后视),就像这样:

<cfset Text = Text.replaceAll('(?<!\w)@\w+','') />

(?<!\w)部分是一个消极的后视,说“确保在这个位置之前没有 \w”。

您可能还想考虑使用(?<!\S)which 将阻止任何非空白字符,或者如果您需要匹配特定字符然后使用(?<![a-z_\-.,])或其他。

于 2012-05-09T16:29:48.423 回答