2013-05-16 2 views
3

Я пишу регулярное выражение, которое должно извлекать следующие шаблоны;Регулярное выражение не работает должным образом с турецкими символами

  • "çççoookkk gggüüüzzzeeelll" (это означает vvveeerrryyy gggoooddd с турецкими символами "ç" и "ü")
  • "ccccoookkk ggguuuzzzeeelll" (это означает то же самое, но с английскими символами "C" и "у")

вот регулярные выражения, которые я пытаюсь;

  • "\b[çc]+o+k+\sg+[üu]+z+e+l+\b": это работает на английском, но не в турецких символов
  • "çok": находит "çok", но когда я пытаюсь "ç+o+k+" не работает "çççoookkk", он находит "çoookkk"
  • "güzel": находит «Гузель», но когда я пытаюсь "g+ü+z+e+l+" не работает «gggüüüzzzeeelll»
  • "\b(c+o+k+)|(ç+o+k+)\s(g+u+z+e+l)|(g+ü+z+e+l+)\b": не работает должным образом
  • "[çc]ok\sg[uü]zel": Я также попытался это, чтобы получить «çok ГУЗ el ", но не работает.

Возможно, проблема связана с использованием операторов регулярных выражений с турецкими символами. Я не знаю, как я могу это решить.

Я использую http://www.myregextester.com, чтобы проверить правильность моих регулярных выражений.

Я использую язык программирования Php, чтобы получить конкретный шаблон из найденных твитов через Twitter Rest Api.

Спасибо,

+1

его не проблема в вашем Regex, двигатель на этом сайте, используя разные. сделайте одно, выберите вариант .net на этом сайте, тогда вы получите правильный результат, что хотите. – Civa

+2

Какой язык программирования вы используете в этом контексте? –

+0

@ JukkaK.Korpela Я использую язык программирования Php, чтобы получить определенный шаблон из найденных твитов через Twitter Rest Api. – bulutcagatay

ответ

4

Вы не указали, какой язык программирования вы используете, но во многих из них, класс \b символа может быть использован только с простой кодировкой ASCII.

Внутренний, \b обрабатывается как граница между \w и \W наборами.
В свою очередь, \w равен [a-zA-Z0-9_].

Если вы не используете какие-либо причудливые метки пространства (вы не должны), рассмотрите возможность использования обычных классов пробелов (\s).

См this table (прокрутите вниз до словоразделов раздела), чтобы проверить, если ваш язык поддерживает Unicode для \b. Если он говорит, «ascii», то это не так.

В качестве побочного примечания, в зависимости от вашего языка программирования, вы можете использовать прямые кодовые обозначения Unicode вместо национальных символов.

Se также: utf-8 word boundary regex in javascript

Дальнейшее чтение:

+0

Я удалил операнды «\ b» и теперь работает. Я не использую символы '' \ s '' и '' \ b "'. Спасибо. – bulutcagatay