Регулярное выражение: символы до и после слова должны иметь одинаковое количество - PullRequest
0 голосов
/ 14 декабря 2018

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

То есть такое же количество звездочек на левой стороне, как направая сторона.Я придумал \*+T\*+, где T - любое слово, не относящееся к звездочке (упрощенно для этого вопроса).Это также считается в **** привет * в "**** привет ****", например, что я не хочу.То, что он должен только найти, это hello, *hello* , **hello**, ***hello***, ****hello**** в ****hello****

. Есть ли способ в Java или вообще, использовать переменное количество длин более одного раза, что-то вроде \*{x}T\*{x}.В какой из сторон "*" имеют одинаковое количество * сцепленных в конце и начале?

1 Ответ

0 голосов
/ 14 декабря 2018

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

(?<!\*)(\**)\b\w+\b(\1)(?!\*)

Это будет соответствовать только слову типа hello или *hello* или ***hello***, но не будет совпадать *hello***

Объяснение:

  • \b\w+\b -> Эта часть позволяет ему просто соответствовать слову, подобному hello
  • (\**) -> Этодеталь захватывает ноль или более звездочек и захватывает их в группе 1 для обратной ссылки на них, чтобы они соответствовали в конце слова, и только если найдено точно такое же количество звездочек, оно получает успешное совпадение.

  • (?<!\*) и (?!\*) -> Отрицательный взгляд вперед гарантирует, что он не выполнит частичное совпадение в большей строке и найдет только совпадение, которому не предшествуют или не следуют символы звездочки.

Демонстрация в реальном времени

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