Извлечь слово из многострочной строки - PullRequest
0 голосов
/ 17 февраля 2020

У меня есть многострочная строка, из которой мне нужно извлечь слово.

Пример строки:

`Locale LANG set to the following: "en"
Scheduled for (Exp) 02/12/20 (#4662) on CSC2CXN00002555.  Batchman LIVES.  Limit: 80, Fence: 0, Audit Level: 1`

Мне нужно извлечь только слово CSC2CXN00002555. Я пытался использовать regex_search ansible module

{{ input_string | regex_search('on(.*).  Batchman', multiline=True) }}

Но я получаю весь шаблон в качестве вывода:

{
"msg": "on CSC2CXN00002555.  Batchman"
}

Есть ли способ достичь этого?

Ответы [ 2 ]

1 голос
/ 18 февраля 2020

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

Вы можете обработать мультилинию, разделив ее на новую строку.

---
- hosts: localhost
  gather_facts: no

  vars:
    input_string: |
        Locale LANG set to the following: "en"
        Scheduled for (Exp) 02/12/20 (#4662) on CSC2CXN00002555.  Batchman LIVES.  Limit: 80, Fence: 0, Audit Level: 1

  tasks:

    - name: "it will return 'CSC2CXN00002555'"
      debug:
        msg: "{{ input_string.split('\n') | regex_replace('^.+ on (\\w+)\\.  Batchman .+', '\\1') }}"

И для лучшее понимание регулярных выражений, играйте с regex101 .

Объяснение регулярных выражений здесь: https://regex101.com/r/4RqNb4/1

0 голосов
/ 17 февраля 2020

Попробуйте использовать это регулярное выражение - CS(.*)5.

{{ input_string | regex_search('CS(.*)5', multiline=True) }}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...