Java регулярное выражение, как сопоставить _, / или / 123? - PullRequest
0 голосов
/ 09 ноября 2019

Я подготовил этот REGEX [_[/\\\d+]], чтобы получить любой из следующих значений:

  • Подчеркивание -> _

ИЛИ

  • Косая черта, за которой следуют несколько цифр /123

Поэтому, когда я пытаюсь сопоставить ниже, результаты

  1. _ (Совпадения -> OK)

  2. / (Совпадения -> ОК)

  3. /123 (Не соответствует -> Не ОК)

Что мне здесь не хватает?

Ответы [ 4 ]

2 голосов
/ 09 ноября 2019

Вы используете [ и ], которые обозначают класс символов, который будет соответствовать любому из перечисленных один раз. Использование \d+ будет соответствовать либо цифре, либо символу +.

Если вы добавите квантификатор, такой как +, к самому классу символов, вы будете повторять любой из перечисленных, но у вас не будет ИЛИлогика.

Вы должны использовать трубу | для части ИЛИ, которая будет соответствовать либо подчеркиванию, ИЛИ косой черте, за которой следуют 1+ цифр.

Чтобы также соответствовать одиночной косой черте, которую вы могли бы сопоставить0+ цифр с использованием * вместо +

_|/\d+

regex demo

Примечание для двойного экранирования обратной косой черты в Java_|/\\d+

1 голос
/ 09 ноября 2019

Использование: _|\\d*

Объяснение:

  _     # an underscore
|       # OR
  /     # a slash
  \\d*  # 0 or more digits
1 голос
/ 09 ноября 2019

Вы можете просто использовать шаблон: _|/\\d*

| по существу объединяет два отдельных шаблона в один и будет совпадать, если любая из сторон совпадает.

Это будет соответствовать:

  • _
  • /
  • /1
  • /12
  • /123 и т. Д.
0 голосов
/ 09 ноября 2019

Если я правильно понял ваш вопрос, вы хотите:

  • одно подчеркивание
  • или косую черту, за которой следуют одна или несколько цифр

Здесь мойрешение:

_|(/\\d+)

Значение:

  • _: подчеркивание
  • |: или
  • (: начало группы захвата
  • \\d: цифра
  • +: один или несколько раз
  • ): конец группы захвата

Надеюсь, это поможет!

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