нужно выбрать количество символов с помощью регулярного выражения - PullRequest
1 голос
/ 19 июня 2020

У меня есть предложение вроде:

"Reentry BUY AUDUSD @ 0.90209 "

Я хочу извлечь «AUDUSD» с помощью регулярного выражения.

(.*?)@

Я хочу выбрать 7 символов слева от «@» так что я могу извлечь "AUDUSD".

1 Ответ

0 голосов
/ 19 июня 2020

Шаблон (.*?)@ соответствует и захватывает в Группу 1 любые ноль или более символов, кроме символов разрыва строки, как можно меньше, начиная с самого левого совпадения , так что вы все начнете сопоставление с самого начала строки, где находится символ @.

Вам необходимо использовать более точный шаблон:

\w+(?=\s*@)
[A-Z]+(?=\s*@)
([A-Z]+) @

См. демонстрацию регулярного выражения . В первых двух примерах нужное вам значение попадает во все совпадение, в третьем значение фиксируется в группе 1.

Подробности

  • \w+(?=\s*@) - 1+ букв / цифр / подчеркиваний, за которыми следуют 0+ пробелов и @
  • [A-Z]+(?=\s*@) - 1+ прописных букв ASCII, за которыми следуют 0+ пробелов и @
  • ([A-Z]+) @ - захват группы 1 соответствует 1+ заглавным буквам ASCII, затем пробел и @ совпадают (но не захватываются).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...