Как вы ссылаетесь на символы Юникода в регулярном выражении ColdFusion? - PullRequest
4 голосов
/ 10 февраля 2009

Я пытаюсь сопоставить этот символ, который я могу набрать с помощью alt-0146. Word говорит мне, что это Unicode 0x2019, но я не могу сопоставить его с помощью регулярных выражений в ColdFusion. Вот фрагмент кода, который я использую для сопоставления от 2 до 10 букв и апострофов, и этот символ

[[:alpha:]'\x2019]{2,10}

но это не работает. Есть идеи?

Ответы [ 2 ]

7 голосов
/ 10 февраля 2009

Похоже, сокращение \ x в CF поддерживает только первые 255 символов ASCII. Чтобы превысить это число, вам нужно использовать встроенную команду chr:

<cfscript>
   yourString = "’";
   result = refind("[[:alpha:]'" & chr(8217) & "]{2,10}", yourString);
   writeOutput(result);
</cfscript>

Это должно дать вам совпадение.

2 голосов
/ 10 февраля 2009

Еще одна вещь, которую вы можете попробовать, это непосредственно включить персонажа:

[[:alpha:]'#Chr(8217)#]{2,10}


Однако я не уверен, будет ли это работать с регулярным выражением CF. Если нет, у вас все еще есть возможность использовать регулярные выражения Java в CF. Это легко сделать и позволяет вам использовать гораздо более широкий спектр функций регулярных выражений, почти наверняка включая поддержку юникода.

Если вы делаете замены, вы можете использовать Java Regex непосредственно в строке CF, например:

<cfset NewString = OrigString.replaceAll( 'ajavaregex' , 'replacement' )/>


Для других функций (например, получение массива совпадений, функции обратного вызова при замене) я создал Java RegEx Utilities - один компонент, который упрощает эти функции в один вызов функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...