使用 ABBYY FineReader Engine 正则表达式
正则表达式用于 基于正则表达式的字典中 以定义语言中允许和禁止的词汇。
正则表达式规则
关于ABBYY FineReader Engine 正则表达式字母表的的说明请见下表:
注:
- 正则表达式中使用的一些字符是“辅助字符”,也就是说,它们的使用是出于系统目的。如上表所示,此类字符包括方括号、点号等等。如果您想要将一个辅助字符作为正常字符输入,可以在前面添加一个反斜线 (\)。示例:[t-v]x+ denotes words like "tx", "txx", "txxx", etc., "ux", "uxx", etc., but \[t-v\]x+ denotes words like "[t-v]x", "[t-v]xx", "[t-v]xxx" 等等。
- 如果需要对某些正则表达式元素进行分组,需使用括号。例如,(a|b)+|c 表示 c 或任何类似 abbbaaabbb、ababab 的组合(任意非零长度的单词,其中可能有任意数量的a和b,并以任意顺序排列),而 a|b+|c 则表示 a、c 和 b、bb、bbb 等。
正则表达式示例
日期的正则表达式
表示日的数字可以由一位数字(例如1、2等)或两位数字(例如02、12)组成,但不能为零(00或0)。日的正则表达式将如下所示:((|0)[1-9])|([12][0-9])|(30)|(31)。
月的正则表达式如下所示:((|0)[1-9])|(10)|(11)|(12)。
年的正则表达式如下所示:(((19)|(20))[0-9][0-9])|([0-9][0-9])。
然后就是将以上三部分组合起来并用点号将数字隔开(例如,1.03.1999)。点号是辅助符号,所以我们必须在它的前面添加一个反斜线 (\)。因此,完整日期的正则表达式将显示为:
(((|0)[1-9])|([12][0-9])|(30)|(31))\.(((|0)[1-9])|(10)|(11)|(12))\.((((19)|(20))[0-9][0-9])|([0-9][0-9]))
电子邮件地址的正则表达式
您可以轻松地创建一种用来表示电子邮件地址的语言。电子邮件地址的正则表达式如下:
[a-zA-Z0-9_\-\.]+\@[a-zA-Z0-9\.\-]+\.[a-zA-Z]+
用于数据捕捉
如果在字段级别的识别中使用正则表达式,通常只需要识别精确匹配正则表达式的词汇。在此情况下,我们建议为识别字段创建一个单独语言,并为它设置以下属性:
- 仅允许字典词汇作为识别结果:设置IBaseLanguage::AllowWordsFromDictionaryOnly 属性为 TRUE。这是精确匹配的必要条件。
- 识别语言的字母集必须只包含正则表达式中包含的字符:指定 IBaseLanguage::LetterSet 属性。这点十分必要,因为来自语言字母表的字符即使不符合正则表达式也可以被识别。
- 设置 IBaseLanguage::IsNaturalLanguage 属性为 FALSE。
示例
C# 代码
另请参阅
17.09.2024 15:14:41