#python-3.x #regex #search
#python-3.x #регулярное выражение #Поиск
Вопрос:
У меня есть скрипт, в котором всегда есть «get the» и «get» в строке. «ОДИН ДВА ТРИ» может варьироваться, например, это также может быть «ТРИНАДЦАТЬ СОРОК» или «ШЕСТЬ». После этих вариантов всегда будет 2-й «get».
У меня есть следующий код:
variable = 'get the ONE TWO THREE get FOUR FIVE'
myVariable = re.compile(r'(?<=get the) .*')
myVariableSearch = myVariable.search(variable)
mySearchGroup = myVariableSearch.group()
print(mySearchGroup)
#prints ONE TWO THREE get FOUR FIVE
Я хочу, чтобы мой скрипт исключал 2-й «get» и все, что за ним. Мой желаемый результат должен быть просто «ОДИН ДВА ТРИ».
Как мне исключить это? Любая помощь была бы оценена!
Комментарии:
1. Используйте
r'(?<=bgetsthes).*?(?=s*bgetb|Z)'
2. Спасибо, именно то, что мне было нужно!
Ответ №1:
Вы можете использовать
bgets thes (.*?)(?=s*bgetb|$)
Смотрите демонстрацию регулярных выражений.
Подробные сведения
bgets thes
— целое словоget
, 1 пробелы,the
, 1 пробелы(.*?)
— Группа 1:(?=s*bgetb|$)
— позитивный прогноз, для которого требуется 0 пробелов, а затем целое словоget
или конец строки сразу справа от текущего местоположения.
Смотрите демонстрацию Python:
import re
variable = 'get the ONE TWO THREE get FOUR FIVE'
myVariableSearch = re.search(r'bgets thes (.*?)(?=s*bgetb|$)', variable)
mySearchGroup = ''
if myVariableSearch:
mySearchGroup = myVariableSearch.group(1)
print(mySearchGroup)
# => ONE TWO THREE