Встроенное регулярное выражение CF не поддерживает look-behinds, что вам нужно для достижения этого (поскольку вы хотите посмотреть «позади» (до) @ и проверить, что есть/не существует, без включая его в вашем матче).
Однако вы можете легко погрузить в Java, чтобы использовать поддержку регулярных выражений в Java (который не поддерживает просмотровые задом), так просто, как это:
<cfset Text = Text.replaceAll('(?<!\w)@\w+','') />
(?<!\w)
часть представляет собой негативный взгляд-за говоря «убедитесь, что в этой позиции нет \ w».
Возможно, вы также захотите использовать (?<!\S)
, который предотвратит любой символ без пробелов, или если вам нужно сопоставить определенные символы, то используйте (?<![a-z_\-.,])
или что-то еще.
Можете ли вы добавить пример для тестирования? – Busches
переобучение («@ CaylaCharnise были близнецами, помните! У меня здесь небольшой грипп :(», «[\ s]? \ B @ \ w +», «», «ALL») – TheJason
Цель состоит в том, чтобы вырезать @ CaylaChamise из строки – TheJason