Как извлечь следующие 2-3 строки? - PullRequest
0 голосов
/ 17 марта 2020

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

Вывод, который я хочу:

  1. Извлечение заголовка
  2. Извлеките вторую строку под заголовком, если есть, извлеките его. Если нет, продолжайте.
  3. Извлечение адреса (только для адреса: независимо от новой строки или нет)

Регулярное выражение:

/(.+?)\s*(\d+.*Singapore\s+\d{6}\b|\d+.*S\d{6})\b/g

1 Ответ

2 голосов
/ 17 марта 2020
/(^.+\n)(^.+\n)?(^\d+.*\sSingapore,?\s\d{6})/gm
  1. (^.+\n) - заголовок захвата

    • () - определяет группу захвата
    • ^ - соответствует началу строки
    • .+ - соответствует 1 или более символам
    • \n - соответствует новой строке
  2. (^.+\n)? - захват 2-й строки

    • ? - соответствует группе 0 или 1 раз (поскольку эта строка необязательна)
  3. (^\d+.*\sSingapore,?\s\d{6}) - адрес захвата

    • \d+ - соответствует 1 или более di git
    • .* - соответствует любому символу 0 или более раз (возможно, вам необходимо изменить его, чтобы он был обязательным)
    • \s - соответствует пробелу
    • Singapore - соответствует слову Сингапур
    • ,? - соответствует запятой 0 или 1 раз (удалите ?, если требуется запятая)
    • \s - соответствует пробелу
    • \d{6} - соответствует 6 цифрам
  4. gm
    • g - глобальный флаг, позволяет найти несколько совпадений в тексте. Требуется только в том случае, если ваш текст содержит более одного набора заголовок / описание / адрес.
    • m - многострочный флаг, поиск совпадений во всем тексте, а не в одной строке.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...