【发布时间】:2018-05-05 00:03:52
【问题描述】:
我需要获取与提供的字符串匹配的正则表达式的百分比,例如。我有正则表达式:
^[A-Za-z]{1,2}[0-9]{4}[a-zA-Z]{1,3}$
试图匹配包含一个或两个字符、四个数字和一到三个字符的字符串。现在,如果我将此正则表达式应用于aa1234bb,它将匹配,但如果使用aa1234,它将不匹配。
我想要的是在将正则表达式应用于字符串之后,它应该返回字符串与正则表达式匹配的百分比,例如对于aa1234,如果我们考虑最多 10 个字符,它与给定的正则表达式匹配几乎 70%会有任何匹配的字符串。
【问题讨论】:
-
我能想到的唯一方法就是计算组数。尝试将您的正则表达式扩展为
^([a-z])([a-z])?(\d)(\d)(\d)(\d)([a-z])([a-z])?([a-z])?$并计算组数。否则,只需进行字符串和匹配长度比较。 -
Python
re模块匹配对象有一个span()方法返回匹配的跨度。您可以将其与总字符串长度进行比较。 -
1234bb的百分比是多少?aabb怎么样?如果您想要的不是严格的从左到右匹配,这将变得更加困难。 -
@Kevin 它也应该给 70%