2015-01-29 2 views
0

При выполнении поиска в регулярном выражении для алфавитных символов [^ A-Za-z \ s] и \ W \ d эквивалентно? Есть ли разница в производительности?Regex: разница между [^ A-Za-z s] и W d

+0

Если ваше соответствие регулярному выражению находится в середине чрезвычайно плотного цикла, который называется тысячи или миллионы раз, разница в исполнении между этими двумя настолько мала, чтобы быть неактуальной. Поэтому выберите тот, который более ясен для ваших целей. (И нет, они не то же самое) –

+0

'Выполнение регулярного поиска для алфавитных символов 'Ваше регулярное выражение исключает их. – nhahtdh

ответ

1

Нет, они не то же самое. Попробуйте это с некоторыми тестовыми данными и докажите это самому себе.

\W является отрицанием \w. \w - «символ слова». Он не включает пробелы, знаки препинания и т. Д.

[A-Za-z\s] «Буквы A-Z, верхний и нижний регистр, плюс пробелы». [^A-Za-z\s] - это отрицание этого.

Почему вы спрашиваете о различии между этими двумя? Вы надеетесь ускорить поиск, используя один вместо другого? Если это так, очень вероятно, что ваш поиск медленный из-за факторов, отличных от тех двух простых простых регулярных выражений, которые вы используете.

1

Нет, они не эквивалентны. \w является эквивалентом A-Za-z0-9_.

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

Смежные вопросы