«неопределенные» совпадения в AS3 RegExp? да? - PullRequest
0 голосов
/ 03 декабря 2008

У меня есть длинное регулярное выражение в AS3 / Flex, которое находит одно из пары десятков слов. Regex выглядит так: word | wordup | wordly | wordster

когда я делаю "wordup wordster!". Match (regex) я получаю неопределенные мачи! возвращаемый массив соответствий имеет Матчи: [0] 'wordup' [1] не определено длина массива: 2

Есть ли известная ошибка в совпадениях группировок AS3? Что может заставить некоторые слова появляться в возвращенном массиве совпадений, а другие возвращаться как неопределенные?

Я искал неправильные символы в своем регулярном выражении и несколько раз проверял регулярное выражение.

Если я просто ищу 'wordup', я получаю массив массива совпадений длиной 1 с правильным содержимым. Если я ищу просто 'wordster', то получаю массив массива с совпадениями [0], который снова не определен.

------ обновление -------

После долгих экспериментов ... мое регулярное выражение было слишком длинным для AS3 Мое действительное регулярное выражение использовало группировку и содержало необязательные скобки:

(?: (? (\ Bword \ b))? | (? (\ Bwordup \ b))? | ... и т. Д. Для 51 слова.

упрощается до: ? (: \ Bword \ Ь | \ bwordup \ Ь |

каким-то образом заставил группы совпадений работать нормально, хотя у меня нет скобок, которые обычно необходимы для определения групп ...

1 Ответ

3 голосов
/ 03 декабря 2008

Когда вы имеете дело с «загадочными» проблемами, вы всегда должны показывать свой реальный код, а не то, что вы считаете эквивалентным. word | wordup | wordly | wordster не даст вам никаких «неопределенных» совпадений.

Вместо использования (?: \ Bword \ b | \ bword2 \ b) используйте это: \ b (?: Word | word2) \ b

Слово регулярного выражения | (word2)? | Word3 даст вам совпадения нулевой длины, потому что вторая альтернатива в регулярном выражении является необязательной. Он будет соответствовать строке нулевой длины в каждой позиции строки, в которой слово не может быть сопоставлено.

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