메인 콘텐츠로 건너뛰기
정규식은 정규식 기반 Dictionary에서 특정 언어에서 허용되는 단어와 허용되지 않는 단어를 정의하는 데 사용됩니다.

정규식 규칙

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]<br />
소문자 라틴 문자[a-z]<br />
대문자 키릴 문자[А-Я]<br />
소문자 키릴 문자[а-я]<br />
숫자[0-9]<br />
공백[\s]<br />
시스템 문자@<br />
Dictionary의 단어@(Dictionary)Dictionary Parameter는 단어를 가져올 사용자 Dictionary의 경로를 설정합니다. Linux 경로 예: @(/opt/MyDictionary.amd) macOS 경로 예: “/Users/user/Documents/MyDictionary.amd Windows에서는 경로의 백슬래시를 두 번 써야 합니다. 예: @(D:\MyFolder\MyDictionary.amd). <Note> 일부 프로그래밍 언어(C++ 등)에서는 string 리터럴에서 백슬래시를 이스케이프해야 합니다. 이 경우 이스케이프된 백슬래시 두 개가 필요하므로, 결과적으로 백슬래시가 네 개가 됩니다. 위의 예는 C++에서 다음과 같이 표시됩니다. </Note> L"@(D:\\\\\\\\MyFolder\\\\\\\\MyDictionary.amd)"
  • 정규식에 사용되는 일부 문자는 “보조” 문자, 즉 시스템 용도로 사용되는 문자입니다. 위 목록에서 볼 수 있듯이 이러한 문자에는 대괄호, 마침표 등이 포함됩니다. 보조 문자를 일반 문자로 입력하려면 앞에 백슬래시()를 붙이십시오. 예: [t-v]x+는 “tx”, “txx”, “txxx” 등과 “ux”, “uxx” 등을 나타내지만, [t-v]x+는 “[t-v]x”, “[t-v]xx”, “[t-v]xxx” 등을 나타냅니다.
  • 특정 정규식 요소를 그룹화해야 하는 경우 괄호를 사용하십시오. 예를 들어, (a|b)+|c는 “c”와 “abbbaaabbb”, “ababab” 등과 같은 모든 조합을 나타냅니다(a와 b가 어떤 순서로든 임의의 개수만큼 포함될 수 있는 길이가 0이 아닌 단어). 반면 a|b+|c는 “a”, “c” 및 “b”, “bb”, “bbb” 등을 나타냅니다.

정규식 예제

날짜 정규식 일을 나타내는 숫자는 한 자리(예: 1, 2 등)일 수도 있고 두 자리(예: 02, 12)일 수도 있지만, 0(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]+

데이터 캡처에 사용하는 경우

field 수준의 인식에서 정규식을 사용하는 경우, 일반적으로는 정규식과 정확히 일치하는 단어만 인식하면 됩니다. 이 경우 fields를 인식하기 위한 별도의 언어를 만들고, 해당 언어에 대해 다음 속성을 설정하는 것이 좋습니다.
  1. 인식 결과로 사전에 있는 단어만 허용해야 합니다. IBaseLanguage::AllowWordsFromDictionaryOnly 속성을 TRUE로 설정합니다. 이는 정확한 일치를 위해 필요합니다.
  2. 인식 언어의 letter set에는 정규식에 포함된 문자만 있어야 합니다. IBaseLanguage::LetterSet 속성을 지정합니다. 언어 알파벳에 포함된 문자는 정규식에 맞지 않더라도 인식될 수 있으므로 이 설정이 필요합니다.
  3. IBaseLanguage::IsNaturalLanguage 속성을 FALSE로 설정합니다.

Windows 샘플

// 전역 ABBYY FineReader Engine 객체
FREngine.IEngine engine;
// LanguageDatabase 객체
FREngine.ILanguageDatabase languageDatabase = engine.CreateLanguageDatabase();
// TextLanguage 객체 생성
FREngine.ITextLanguage textLang = languageDatabase.CreateTextLanguage();
// BaseLanguage 객체를 만들고 설정을 지정합니다
FREngine.IBaseLanguage baseLang = textLang.BaseLanguages.AddNew();
baseLang.set_LetterSet(FREngine.BaseLanguageLetterSetEnum.BLLS_Alphabet, "$0123456789,.");
baseLang.IsNaturalLanguage = false;
baseLang.AllowWordsFromDictionaryOnly = true;
// 새 정규식 기반 Dictionary를 만들고 언어에 연결합니다
FREngine.IDictionaryDescription dictDescr = baseLang.DictionaryDescriptions.AddNew(FREngine.DictionaryTypeEnum.DT_RegularExpression);
// 정규식을 설정합니다
dictDescr.GetAsRegExpDictionaryDescription().SetText(@"[$0-9,.]+");

참고 항목

Dictionary 사용하기 RegExpDictionaryDescription