Chinese Simplified (简体中文)

使用 ABBYY FineReader Engine 正则表达式

正则表达式用于 基于正则表达式的字典中 以定义语言中允许和禁止的词汇。

正则表达式规则

关于ABBYY FineReader Engine 正则表达式字母表的的说明请见下表:

项名称 常规正则表达式符号 使用示例及说明
任意字符 . c.t — 表示“cat”、“cot”这样的词汇
字符范围内的字符 []

[b-d]ell — 表示“bell”、“cell”、“dell”这样的词汇

[ty]ell — 表示词汇“tell” 和 “yell”

字符范围以外的字符 [^]

[^y]ell — 表示像“dell”、“cell”、“tell”这样的词汇,但是禁止“yell”

[^n-s]ell — 表示像“bell”、“cell”这样的词汇,但是禁止“nell”、“oell”、“pell”、“qell”、“rell” 和 “sell”

或者 | c(a|u)t — 表示词汇“cat”和“cut”
在一行中出现0次或以上次数 * 10* - 表示数字 1、10、100、1000 等
在一行中出现1次或以上次数 + 10+ - 允许数字 10、100、1000 等,但禁止 1。
字母或数字 [0-9a-zA-Z]

[0-9a-zA-Z] — 允许单个字符;

[0-9a-zA-Z]+ — 允许任何词汇

大写拉丁字母 [A-Z]
小写拉丁字母 [a-z]
大写西里尔字母 [А-Я]
小写西里尔字母 [а-я]
数字 [0-9]
空格 [\s]
系统字符 @
来自字典的词汇 @(Dictionary)

Dictionary 参数可设置用于取词的用户字典的路径。路径中的反斜线必须是两条。例如:@(D:\\MyFolder\\MyDictionary.amd)

注: 有些编程语言(例如 C++)会要求您在字符串文本中转义反斜线。在此情况下,你将需要两个转义反斜线,从而产生一个四杠反斜线。以上示例在 C++ 中将显示如下:

L"@(D:\\\\MyFolder\\\\MyDictionary.amd)"
        

注:

  • 正则表达式中使用的一些字符是“辅助字符”,也就是说,它们的使用是出于系统目的。如上表所示,此类字符包括方括号、点号等等。如果您想要将一个辅助字符作为正常字符输入,可以在前面添加一个反斜线 (\)。示例:[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]+

用于数据捕捉

如果在字段级别的识别中使用正则表达式,通常只需要识别精确匹配正则表达式的词汇。在此情况下,我们建议为识别字段创建一个单独语言,并为它设置以下属性:

  1. 仅允许字典词汇作为识别结果:设置 IBaseLanguage::AllowWordsFromDictionaryOnly 属性为 TRUE。这是精确匹配的必要条件。
  2. 识别语言的字母集必须只包含正则表达式中包含的字符:指定 IBaseLanguage::LetterSet 属性。这点十分必要,因为来自语言字母表的字符即使不符合正则表达式也可以被识别。
  3. 设置 IBaseLanguage::IsNaturalLanguage 属性为 FALSE。

示例

C# 代码

另请参阅

借助字典进行处理

RegExpDictionaryDescription

24.03.2023 8:51:52

Usage of Cookies. In order to optimize the website functionality and improve your online experience ABBYY uses cookies. You agree to the usage of cookies when you continue using this site. Further details can be found in our Privacy Notice.