решение регулярных выражений с положительным взглядом - PullRequest
0 голосов
/ 03 октября 2018

Проблема регулярного выражения.Я хотел бы, чтобы первые четыре строки были ниже соответствующих.Вывод должен состоять из 3 символов только между _ и ..

Следовательно, они будут соответствовать:

_20101_Bp16tt20_KG2.asc _201_Bondp0_KGB.ASC _2011_rndiep16tt20_232.AsC _20101_odiep16tt20_ab3.ASC

и должны возвращать соответственно KG2, KGB, 232, ab3.

И они не будут совпадать:

_2_ordep16tt.asc __Bndt20_pippo_K.asc

Я могу выделить весь блок _KG2.asc, выполнив ((?<=_)(...)(\.(?i)(asc))).Тем не менее, я просто хочу KG2.Я думаю, что я должен применить позитивный взгляд, но мои попытки все провалились.Не могли бы вы помочь мне?

Ответы [ 3 ]

0 голосов
/ 03 октября 2018

Также используйте умный взгляд

((?<=_)(...)(?=\.(?i)(asc)))

См. https://regexr.com/40jfa

0 голосов
/ 03 октября 2018

Может быть, это выражение помогает тебе ..

'_201_Bondp0_KGB.ASC'.match(/(?<=_)(...)(?=\.)/g)
0 голосов
/ 03 октября 2018

Вы можете использовать \K и позитивный прогноз:

_\K[A-Za-z0-9]{3}(?=\.(?i)asc$)

Regex demo

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

  • _ Совпадение буквально
  • \K Забудьте предыдущее совпадение
  • [A-Za-z0-9]{3} Совпадение 3 раза с прописными или строчными буквами или цифрой (Заменить точкой)если вы хотите сопоставить любой символ)
  • (?=\.(?i)asc$) Положительный взгляд, чтобы утверждать, что ниже следует точка и asc в нижнем или верхнем регистре, и утверждать конец строки
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...