我想匹配2个字符串
例如我有预定义的单词,例如小麦,鸡蛋,面粉等...
我从OCR得到了文本,例如wh3at,agg,f1Our等...
因此 wh3at 应该匹配小麦或 f1Our 应该匹配面粉等。
答案 0 :(得分:0)
我从事OCR项目的工作,在这些项目中我们对提取的文本进行了“规范化”。您可以构建与合理预期/观察到的输出匹配的正则表达式。
import java.util.regex.Pattern;
public class Regex {
public static void main(String[] args) {
String[] strings = {"wh3at", "f1Our", "f10ur", "agg"};
for (String s : strings)
System.out.println(String.format("%s -> %s", s, normalizeWord(s)));
}
public static String normalizeWord(String unnormalized) {
if (Pattern.compile("(?i)wh(e|3)at").matcher(unnormalized).matches()) {
return "wheat";
} else if (Pattern.compile("(?i)f(1|L)(O|0)ur").matcher(unnormalized).matches()) {
return "flour";
} else if (Pattern.compile("(?i)(a|e)gg").matcher(unnormalized).matches()) {
return "egg";
}
return unnormalized;
}
}