0
我有一个正则表达式的另外一个问题,我要赶INFO1,INFO2和INFO3:蟒蛇正则表达式搜索
>>> a
'|123|blabla bloblo|90'
>>> b
'|123|blabla[[blibli|bloblo]]|90'
>>> re.search('\|(?P<info1>\d+)\|(?P<info2>[^\|]*)\|(?P<info3>\d+)',a).groupdict()
{'info1': '123', 'info3': '90', 'info2': 'blabla bloblo'}
>>> re.search('\|(?P<info1>\d+)\|(?P<info2>[^\|]*)\|(?P<info3>\d+)',b).groupdict()
AttributeError: 'NoneType' object has no attribute 'groupdict'
我想用|作为分隔符,但如果它环绕在[[]]或{{}} 对于B我想:
{'info1': '123', 'info3': '90', 'info2': 'blabla[[blibli|bloblo]]'}
感谢,
请勿为此使用单个正则表达式。即使可能,它也是难以辨认的。先使用正则表达式分割出包围的部分。如果语法变得比这更复杂,你应该开始考虑一个词法分析器。 – user37078
你有任何控制这种格式?因为如果你可以用单个字符来引用例如而不是[[和]]使用'''或其他字符,您可以使用csv模块轻松解析它 –