Как я могу избежать этой строки правильно? - PullRequest
0 голосов
/ 22 ноября 2010

У меня есть сложное регулярное выражение, которое я хочу применить. Вот мой рисунок:

/(?:^|\s|[\.(\+\-\,])(?:\$?)\$((?:[0-9]+(?=[a-z])|(?![0-9\.\:\_\-]))(?:[a-z0-9]|[\_\.\-\:](?![\.\_\.\-\:]))*[a-z0-9]+)/i

Как я могу объявить это как строку и убедиться, что все экранировано?

Ответы [ 3 ]

2 голосов
/ 22 ноября 2010

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

Настройки -> Java -> Редактор -> Набор текста -> [x] Удаление текста при вставке ...

2 голосов
/ 22 ноября 2010

Мне кажется, что в этом регулярном выражении много ненужного

  1. Что-то вроде (?:\$?) такое же, как \$?
  2. Нет необходимости«защитить» символы «.», «_», «,» или «+» в группе с квадратными скобками

Итак, что вы действительно могли бы получить:

/(?:^|\s|[.(+\-,])\$?\$((?:[0-9]+(?=[a-z])|(?![0-9.:_\-]))(?:[a-z0-9]|[_.\-:](?![._\-:]))*[a-z0-9]+)/i

Что касается помещения его в строку, то все, о чем вам действительно нужно беспокоиться, это обратные слеши.Те должны быть удвоены ("\").Внешние символы "/" будут удалены, а завершающий модификатор "i" будет передан в метод Pattern.compile().

0 голосов
/ 22 ноября 2010

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

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