Учитывая строку, я хочу создать регулярное выражение, которое соответствует только недействительному, определенному символу, например. «точка с запятой», то есть , а не, найденная в скобках или круглых скобках. Я могу написать шаблон, который соответствует обратному случаю, но как я могу инвертировать (например, ^
) шаблон?Регулярное выражение Python для поиска специальных символов между разделителями
EDIT: Следует отметить, что мне нужно общее решение, где между точкой с запятой и разделителем могут существовать символы длины n; не только совпадения нулевой ширины.
>>> invalid = '2#2;a,a [4,4;b/b]'
>>> valid = '(2#2;a,a) [4,4;b/b]'
>>> pattern = r'(\(.+?\;.+?\))|(\[.+?\;.+?\])' # finds valid cases; want the opposite
# Result
>>>bool(re.findall(pattern, invalid))
True # overlooks the invalid subset '2;a'
>>> not re.findall(pattern, valid)
True
# Desired result
>>>bool(re.findall(pattern_inverse, invalid))
True
>>> bool(re.findall(pattern_inverse, valid))
False
наклоняет вы просто вызываете 'любой (re.findall (...))', чтобы сделать такой же эффект, как список вашего компе –
Ya, сделано спасибо .. –
или ';?! ([^() ] * \) | [^ \ [\]] * \]) ' –