我正在尝试替换字符串中以 @ 开头的任何单词...
我尝试了许多变体,但似乎都没有工作......
rereplace(getMessages.term, "[\s]?\B@\w+", "", "ALL")
有什么建议么?
我正在尝试替换字符串中以 @ 开头的任何单词...
我尝试了许多变体,但似乎都没有工作......
rereplace(getMessages.term, "[\s]?\B@\w+", "", "ALL")
有什么建议么?
CF 的内置正则表达式不支持后视,这是您实现这一目标所需的(因为您想在 @ 的“后面”(之前)查看并验证存在/不存在的内容,而不将其包含在您的匹配)。
但是,您可以轻松地使用 Java,以利用 Java 的正则表达式支持(它确实支持后视),就像这样:
<cfset Text = Text.replaceAll('(?<!\w)@\w+','') />
该(?<!\w)
部分是一个消极的后视,说“确保在这个位置之前没有 \w”。
您可能还想考虑使用(?<!\S)
which 将阻止任何非空白字符,或者如果您需要匹配特定字符然后使用(?<![a-z_\-.,])
或其他。