我对正则表达式有疑问。
我的问题是OCR系统有时返回一个字符串,该字符串在100%时无效。可以说,我们在图片上有一个电话号码,我的OCR系统返回了:
69527l0563
,而不是:6952710563
系统认为1
与"L".ToLower()
更相似。
我的问题是:是否有任何快速的方法来检查字符串是否以某个百分比匹配正则表达式?
在此示例中,我想获取信息,该字符串与90%的正则表达式匹配,因为只有一个字符是字母,而不是数字。
正则表达式就像:Regex regexp = new Regex(@"^[0-9]+-?[0-9]+-?[0-9]+-?[0-9]+-?[0-9]*$ ");
另一个例子是: 我们要检查OCR系统提供的字符串是否为汽车身份号码。 假设我们写了一个Regexp:
P012345
,而不是PO12345
,我想知道此字符串与正则表达式的匹配率约为85%,因为只有一个字符是错误的。另一个例子:
5
结尾。可以说OCR将返回PO123A4
,所以现在字符串仅在70%正确,因为两个字符是错误的,但是在此示例中,数字4仍然是数字,可以,但是我们只是说字符串必须以5结尾。 / li>
第三个示例是:
Posen
(波兰的城市)。现在,假设OCR将返回:osen
。我想知道返回的字符串与该正则表达式的匹配率为80%(缺少一个字母)。我想出了一个解决方案(我只会描述简化的想法),即:
让我们得到一个与此正则表达式匹配的字符串,例如:0123456789,现在尝试与比较字符串(695 ...)交换该字符串的每个字母(0123 ...)。 然后只要意识到哪些字符不正确,以及有多少不匹配正则表达式即可。
或者在现有问题中还有其他全局方法可以解决这些问题吗?