0

文字列内の@で始まる単語を置き換えようとしています...

いくつかのバリエーションを試しましたが、どれも機能していないようです...

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

助言がありますか?

4

1 に答える 1

3

CFの組み込み正規表現は、後読みをサポートしていません。これは、これを実現するために必要なものです(@の「後ろ」(前)を確認し、@に含めずに、そこにある/ないことを確認する必要があるため)マッチ)。

ただし、次のように簡単にJavaにアクセスして、Javaの正規表現サポート(後読みをサポート)を利用できます。

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

この(?<!\w)部分は、「この位置の前に\wがないことを確認してください」という否定的な裏返しです。

また、空白以外の文字を防ぐために使用することを検討することもできます。(?<!\S)特定の文字と一致させる必要がある場合は、などを使用し(?<![a-z_\-.,])てください。

于 2012-05-09T16:29:48.423 に答える