在字符串开头匹配前瞻时,Python和PCRE之间的区别

时间:2016-11-29 04:15:02

标签: python regex pcre regex-lookarounds

一般来说,前瞻性断言遵循其他一些模式:

Isaac(?!Asimov)

但它出现在模式的开头是什么意思?

以下是一个示例(simplename模式来自docutils):

#!/usr/bin/env python
import re

regex = re.compile(r'(?P<simplename>(?:(?!_)\w)+(?:[-._+:](?:(?!_)\w)+)*)')
input = ['_1_2_name', '1_2_name', 'name_1_2', ':123', 'name:s:s_dd', 'name_-+.sdf']
for i in input:
    match = regex.match(i)
    if match:
        print "MATCH: ", match.group('simplename')
    else:
        print "NOT MATCH: %s" % i

此正则表达式将正确匹配不以_开头的变量名称,但在使用libpcre运行相同的正则表达式时它不起作用。 Python不匹配&#34; _1_2_name&#34;但是libpcre会匹配它并得到&#34; 1_2_name&#34;结果。

我猜Python匹配开头的位置,但libpcre没有。 Python和PCRE有什么区别?使用PCRE的等效模式是什么?

0 个答案:

没有答案