#regex
#регулярное выражение
Вопрос:
Я хочу извлечь буквы с цифрами слева.
Например, 3F 4G XY
вывод F
и G
.
Я пытался сделать это, используя это регулярное выражение (?=d)[A-Z]
, но потерпел неудачу.
Посмотрите на следующий код:
s = "1A 2B 3C IJK X1 Y2 Z3"
s.match(/(?=d)[A-Z]/g) // null
s.match(/[A-Z](?=d)/g) // [ 'X', 'Y', 'Z' ]
Я был удивлен, почему первое совпадение не было найдено, а второе было найдено правильно.
На мой взгляд, это четное выражение такое же, но меняются левый и правый.
Я неправильно понял?
Это,
Как мне получить этот вывод ['A', 'B', 'C']
?
Комментарии:
1. Это должен быть положительный взгляд сзади
(?<=d)[A-Z]
Ответ №1:
Поскольку текст обрабатывается слева направо, сначала обрабатывается число, поэтому вам нужен предварительный просмотр:
(?<=d)[A-Z]
Таким образом, механизм регулярных выражений переходит к уже обработанному тексту для поиска вашего шаблона