有没有一种方法可以快速检查以什么百分比的字符串匹配正则表达式?

时间:2018-12-20 11:34:38

标签: c# regex

我对正则表达式有疑问。

我的问题是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:

  1. 字符串必须以两个字母开头,后跟5个数字。 如果OCR返回:P012345,而不是PO12345,我想知道此字符串与正则表达式的匹配率约为85%,因为只有一个字符是错误的。

另一个例子:

  1. 字符串必须以PO开头,可能有以下4个数字,并且必须以数字5结尾。可以说OCR将返回PO123A4,所以现在字符串仅在70%正确,因为两个字符是错误的,但是在此示例中,数字4仍然是数字,可以,但是我们只是说字符串必须以5结尾。 / li>

第三个示例是:

  1. 我们有一个正则表达式,表示我们需要找到一个字符串:Posen(波兰的城市)。现在,假设OCR将返回:osen。我想知道返回的字符串与该正则表达式的匹配率为80%(缺少一个字母)。

我想出了一个解决方案(我只会描述简化的想法),即:

让我们得到一个与此正则表达式匹配的字符串,例如:0123456789,现在尝试与比较字符串(695 ...)交换该字符串的每个字母(0123 ...)。 然后只要意识到哪些字符不正确,以及有多少不匹配正则表达式即可。

或者在现有问题中还有其他全局方法可以解决这些问题吗?

0 个答案:

没有答案