Regex для строки, не содержащей пробелов и хотя бы одного '*' - PullRequest
0 голосов
/ 07 марта 2019

Я застрял на этом. Примеры строк, которые должны соответствовать:

  • * abc
  • а *
  • * abc *
  • ab * c
  • A * B * C
  • * а * Ь * с *

Примеры строк, которые не должны совпадать:

  • а
  • *
  • abc *
  • a * bc (в этом примере '* bc' должно совпадать)

(PS: я работаю на Java, если это имеет значение)

Ответы [ 2 ]

2 голосов
/ 07 марта 2019

Вы можете использовать положительный шаблон прогнозирования, чтобы убедиться, что в матче есть хотя бы один *, и отрицательный шаблон прогнозирования, чтобы гарантировать, что * не один:

(?=\S*\*)(?!\*(?:\s|$))\S+

Демо: https://regex101.com/r/0sdl5a/1

1 голос
/ 07 марта 2019

Решение без использования lookaheads:

[a-z]+\*[*a-z]*|\*+[a-z][*a-z]*

В первом случае искомая буква появляется перед первой звездой.

во втором случае звезда (ы) появляются первыми, за которыми следует требуемая буква.

оба случая объединяются с использованием |

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