2016-09-26 4 views
0

Я пытаюсь сопоставить несколько укусов, в которые также входит необязательная группа захвата.[Python3] RegEx для соответствия нескольким строкам

Мой RegEx:

(\[[A-Za-z]*\])(.*) - (.*)(.[0-9]{2}\.[0-9]{2}\.[0-9]{2}.)?(\[.*\]) 

Струны:

[Test]Kyubiikitsune - Company Of Wolves[20.06.96][Hi-Res] 
[TEst]_ANother - Company Of 2[Hi-Res] 
[Yes]coOl__ - some text_[20.06.96][Hi-Res] 

Как я могу соответствовать всем этим и оптимизировать RegEx? Я все еще новичок в этом.

+2

Ну, ваша модель работает. Вы можете использовать ленивую точку вместо жадного, но действительно ли это имеет значение? Я использовал бы ['(\ [[A-Za-z] * \]) (. *?) - (. *?) (\ [[0-9] {2} (?: \. [0- 9] {2}) {2}])? (\ [[^] [] *]) '] (Https://regex101.com/r/hO0yF6/1), но без дополнительных входных данных это как хорошо, как ваш. –

+0

@ WiktorStribiżew По какой-то причине ваши работы, но мои не сделали. Есть ли способ исключить скобки вокруг даты? – rhillhouse

+0

Да, ['(\ [[A-Za-z] * \]) (. *?) - (. *?) (?: \ [([0-9] {2} (?: \. [ 0-9] {2}) {2})?])? (\ [[^] [] *]) '] (https://regex101.com/r/hO0yF6/2). Почему твоя работа не работает? Отправьте код. (Кстати, вот [твоя демо-версия] (https://regex101.com/r/eK2uR8/1)). –

ответ

0

Я предполагаю this является то, что вы хотите: r"\[(.*?)\](.*?)\s*-\s*(.*?)(?:\[(\d{2}\.\d{2}\.\d{2})\])?\[(.*?)\]"g

Смежные вопросы