регулярное выражение python \ 1 \ 2 возможность добавить строку в результирующий текст - PullRequest
0 голосов
/ 25 апреля 2020

Хотелось бы узнать, возможно ли добавить строку к результату операции re.search в python в одну строку.

Например, у меня есть строка:

strExamp = "Julia the happy girl from the 6th century" 

Результат, которого я хочу достичь: Юлия, счастливая девушка из давно ушедшего 6-го века

мой код:

pattern = r"([a-zA-Z ]*),([/d][a-zA-Z ]*)",r"\1, myText+ \2" --doesnt work ofc 
result = re.search(pattern, strExamp)

Что бы найти способ решить это?

Ответы [ 2 ]

1 голос
/ 25 апреля 2020

Вы можете сопоставить символы слова без ди git [^\W\d]+ в группе, перед которой стоит пробел, и утверждать, что справа это ди git.

В замене вы могли бы используйте полное совпадение, используя \g<0>, затем пробел и замену.

Совпадение

^[^\W\d]+(?: [^\W\d]+)*(?= \d)

Объяснение

  • ^ Начало строки
  • [^\W\d]+ Совпадение 1+ раз слово char, кроме ди git
  • (?: Группа без захвата [^\W\d]+ Совпадение с пробелом и 1+ раз слово char, кроме ди git
  • )* Закрыть группу и повторить 0+ раз
  • (?= \d) Положительный взгляд вперед, заявить ди git справа

Regex demo | Python демо

Заменить на

\g<0> long-gone

Пример кода

import re

regex = r"^[^\W\d]+(?: [^\W\d]+)*(?= \d)"
test_str = "Julia the happy girl from the 6th century"
subst = r"\g<0> long-gone"
result = re.sub(regex, subst, test_str)

if result:
    print (result)

Выход

Julia the happy girl from the long-gone 6th century
1 голос
/ 25 апреля 2020

IIU C, Использование:

import re

result = re.sub(r"(.*?)\s(\d+.*)", rf"\g<1> {my_text} \g<2>", strExamp)
print(result)

Если my_text = "long-gone" и strExamp = "Julia the happy girl from the 6th century", то печатается:

Julia the happy girl from the long-gone 6th century 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...