我想解析源文件中的代码标签。我写这个正则表达式与PCRE正常工作:如何在Python中使用(?(DEFINE))编写正则表达式?
(?<tag>(?&TAG)):\s*
(?<message>.*?)
(
<
(?<author>(?:\w{3}\s*,\s*)*\w{3})?\s*
(?<date>(?&DATE))?
(?<flags>(?&FLAGS))?
>
)?
$
(?(DEFINE)
(?<TAG>\b(NOTE|LEGACY|HACK|TODO|FIXME|XXX|BUG))
(?<DATE>\d{4}-\d{2}-\d{2})
(?<FLAGS>[pts]:\w+\b)
)
不幸的是,似乎Python不理解DEFINE(https://regex101.com/r/qH1uG3/1#pcre)
什么是Python中最好的解决方法吗?
鉴于您不曾使用过这些定义中的任何一个,而不仅仅是将它们放入内联中? – jonrsharpe 2015-02-11 09:13:16
@TimPietzcker是的,我做到了。很明显,我明白Python不支持DEFINE语句,但可能有类似写入方式的变通方法(例如'(?P)'而不是'(?)') –
nowox
2015-02-11 09:16:32
啊,对不起。我以为你已经知道Python不支持subregex定义。对不起,评论不高。我想唯一的解决方法是使用['regex'模块(PyPI)](https://pypi.python.org/pypi/regex)。 – 2015-02-11 09:18:29