正则表达式回答是或否问题 - 字符串是否与模式匹配。
我想将否分为两类:
- 作为有效字符串前缀的无效字符串
- 不是有效前缀的无效字符串
这是一个示例(正则表达式 01+2):
012有效12无效;它不是有效字符串的前缀01无效;它是一个有效字符串的前缀:012
可以这样做吗?如果没有,是否有图书馆可以做出这种区分?
请您参考如下方法:
我支持正则表达式的建议。该模块简直太棒了。
下面是一个使用正则表达式进行模糊匹配的例子:
import regex
# traditional matching - three digits
r = '(?:\d\d\d)'
print regex.findall(r, '1xx22yy333zz')
## ['333']
# fuzzy matching - three digits, allow at most 2 deletions
r = '(?:\d\d\d){d<3}'
print regex.findall(r, '1xx22yy333zz')
## ['1', '22', '333']
{d<3}部分基本上说“如果我们向其中添加一个或两个字符,那将是一个匹配项” - 与您问题中的第 3 点相同。
参见 http://pypi.python.org/pypi/regex了解更多信息(查找“近似“模糊”匹配”)。
