Регулярное выражение, чтобы соответствовать все множество, кроме определенных - PullRequest
3 голосов
/ 28 марта 2010

Я уверен, что об этом уже спрашивали, но я не могу найти его (или не знаю правильную формулировку для поиска)

В основном я хочу регулярное выражение, которое соответствует всем не алфавитно-цифровым, кроме дефисов. Таким образом, в основном соответствует \ W +, кроме exclude '-' Я не уверен, как исключить определенные из готового набора.

Ответы [ 4 ]

8 голосов
/ 28 марта 2010

\W является сокращением для [^\w]. Итак:

[^\w-]+

Немного фона:

  • […] определяет набор
  • [^…] отрицает набор
  • Как правило, каждый набор \v (строчные буквы) отрицается на \V (верхний регистр), где V - любая буква, которая определяет набор.
  • для международных символов, вы можете посмотреть [[:alpha:]] и [[:alnum:]]
1 голос
/ 28 марта 2010

Вы можете использовать:

[^a-zA-Z0-9_-]

или

[^\w-]

для соответствия одному не дефису, не буквенно-цифровому. Для сопоставления одного или нескольких префиксов с +

1 голос
/ 28 марта 2010
[^\w-]+

сделает именно это. Совпадение с любыми символами, не входящими в набор \w, кроме дефиса.

0 голосов
/ 06 ноября 2017

В Java7 или более поздней версии вам нужно добавить (?U), чтобы соответствовать всем специфическим для локали символам. например,

(?U)[^\w-]

В строке Java (вам нужно экранировать символ \ вместе с другим):

(?U)[^\\w-]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...