Regex для предложений в Python - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть еще один запрос

вот два предложения

[1,12:12] call basic_while1() Error Code: 1046. No database selected

[1,12:12] call add() Asdfjgg Error Code: 1046. No database selected

[1,12:12] call add()

[1,12:12]

Error Code: 1046. No database selected

Теперь я хочу получить такой вывод

['1','12:12',"call basic_while1"], ['1','12:12', 'call add() Asdfjgg'], ['1','12:12', 'call add()'], ['1','12:12'], ['','','',' Error Code: 1046. No database selected']

Я использовал это r'^\[(\d+),(\s[0-9:]+)\]\s+(.+), это мое основное регулярное выражение, тогда я по своему усмотрению изменил его, но мне это не помогло

Iхотите вырезать все точно перед "Код ошибки"

как это сделать?

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

в основном вы просили получить все до "кода ошибки"

Я хочу вырезать все точно до "кода ошибки"

так просто, попробуйте: find = re.search('((.)+)(\sError Code)*',s) и find.group(1) даст вам '[1,12:12] call add() Asdfjgg', что вы и хотели.

, если после того, как вы получили эту строку, вы хотите list, который вы запросили:

desired_list = find.group(1).replace('[','').replace(']','').replace(',',' ').split()

0 голосов
/ 18 декабря 2018

Если вы хотите сделать это в одном регулярном выражении, шаблон немного громоздкий: (?:^\[(\d+),(\s?[0-9:]+)\](?:\s+(.+?)\s?)?(?:Error Code:.*)?$)|(?:()()()(Error Code:.*$))

>>> s = """[1,12:12] call basic_while1() Error Code: 1046. No database selected
... [1,12:12] call add() Asdfjgg Error Code: 1046. No database selected
... [1,12:12] call add()
... [1,12:12]
... Error Code: 1046. No database selected"""
>>> pattern = re.compile(r'(?:^\[(\d+),(\s?[0-9:]+)\](?:\s+(.+?)\s?)?(?:Error Code:.*)?$)|(?:()()()(Error Code:.*$))')
>>> for line in s.split('\n'):
...     print(pattern.match(line).groups())
...
['1', '12:12', 'call basic_while1()']
['1', '12:12', 'call add() Asdfjgg']
['1', '12:12', 'call add()']
['1', '12:12']
['', '', '', 'Error Code: 1046. No database selected']

Я большой поклонник regex101.com попробовать интерактивно создавать регулярные выражения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...