Совпадение всех нечисловых символов между двумя подчеркиваниями - PullRequest
1 голос
/ 08 июля 2019

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

JohnDoe_King234_sample

Мне нужен следующий вывод из строки: King

У меня естьпопробовал следующее регулярное выражение: (?<=_).\D*(?=_) (посмотрите положительно вперед для _, затем сопоставьте нечисловые символы, затем посмотрите положительно за _)

Если моя строка:

JohnDoe_King_sample

, тогда мое выражение вернетсяKing.Если моя строка:

JohnDoe_King234_sample

, то мое выражение не совпадает.

(?<=_).\D*(?=_)

Ожидаемые результаты: King

Фактические результаты:

1 Ответ

2 голосов
/ 08 июля 2019

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

(?<=_)[^_\d]+(?=\d*_)

См. Демоверсию regex

Детали

  • (?<=_) - a _ должен быть прямо перед текущим местоположением
  • [^_\d]+ - любые 1 или более символов, кроме _ и цифр -
  • (?=\d*_) - после 0 или более цифр следует один _ непосредственно справа от текущего местоположения.

ПРИМЕЧАНИЕ : Если у вас внутри этой подстроки могут быть цифры между подчеркиванием, если у вас есть способ обработать строку с помощью некоторого языка программирования, вы можете использовать регулярное выражение _([^_]+)_ для извлечения первого сопоставьте, затем возьмите значение группы 1 и удалите из него все цифры, используя простой шаблон \d+ с методом / функцией замены регулярного выражения.

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