Регулярные выражения - фильтрация буквенных и не буквенно-цифровых символов - PullRequest
0 голосов
/ 22 августа 2009

Мне нужно отфильтровать буквенные и не алфавитно-цифровые символы из строки, чтобы сделать ее целым числом.

В чем разница между строками регулярного выражения

\w

и

\w*

Ответы [ 2 ]

1 голос
/ 22 августа 2009

Код \w соответствует одному буквенно-цифровому символу, например, набор [0-9A-Za-z_].

Квантор * совпадает с квантификатором {0,}, повторяет совпадение ноль или более раз.

Помещение знака вопроса после квантификатора делает его ленивым, т. Е. Оно соответствует как можно меньшему числу символов вместо максимально возможного.

Итак, \w*? соответствует нулю или более буквенно-цифровых символов, лениво.

Если вы хотите отфильтровать символы, которые не могут быть в числе, почему бы просто не использовать отрицательный набор? Это будет соответствовать любому символу, который не является знаком минус или цифрой:

[^\-\d]
1 голос
/ 22 августа 2009

\w соответствует любому буквенно-цифровому символу (символам слова), включая подчеркивание (сокращение от [a-zA-Z0-9 _]).

Эквивалент [A-Za-z0-9_].

Например, / \ w / соответствует «a» в «apple», «5» в «$ 5.28» и «3» в «3D».

*

Повторяет предыдущий элемент ноль или более раз. Жадный, поэтому как можно большее количество элементов будет сопоставлено перед попыткой перестановок с меньшим количеством совпадений предыдущего элемента, вплоть до того момента, когда предыдущий элемент вообще не будет сопоставлен.

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