Perl兼容Python中的正则表达式(PCRE)

时间:2011-08-15 09:26:55

标签: python regex parsing pcre

我必须在Python中基于PCRE解析一些字符串,我不知道该怎么做。

我要解析的字符串看起来像:

match mysql m/^.\0\0\0\n(4\.[-.\w]+)\0...\0/s p/MySQL/ i/$1/

在这个例子中,我必须得到这些不同的项目:

"m/^.\0\0\0\n(4\.[-.\w]+)\0...\0/s" ; "p/MySQL/" ; "i/$1/"

我发现在Python中唯一与PCRE操作相关的是这个模块:http://pydoc.org/2.2.3/pcre.html(但是它写的是.so文件......)

你知道是否存在一些Python模块来解析这种字符串吗?

3 个答案:

答案 0 :(得分:63)

答案 1 :(得分:4)

您正在寻找'(\w/[^/]+/\w*)'

像这样使用,

import re
x = re.compile('(\w/[^/]+/\w*)')
s = 'match mysql m/^.\0\0\0\n(4\.[-.\w]+)\0...\0/s p/MySQL/ i/$1/'
y = x.findall(s)
# y = ['m/^.\x00\x00\x00\n(4\\.[-.\\w]+)\x00...\x00/s', 'p/MySQL/', 'i/$1/']

在与Edi Weitz的Regex Coach一起玩时发现它,所以感谢对这个问题的评论让我记住了它的存在。

答案 2 :(得分:2)

由于您要运行PCRE正则表达式,并且Python的re模块与其原始PCRE原点不同,您可能还想查看Arkadiusz Wahlig's Python bindings for PCRE。这样你就可以访问原生PCRE,而不需要在正则表达式之间进行转换。