我必须在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模块来解析这种字符串吗?
答案 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,而不需要在正则表达式之间进行转换。