summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLászló Németh <nemeth@numbertext.org>2012-08-24 14:13:14 +0200
committerLászló Németh <nemeth@numbertext.org>2012-08-24 14:26:09 +0200
commit28f07b24d9f0d971e4a50663cd0bdf52dd025fb5 (patch)
tree8dc0e05c56038c7f914a0d8c74f2c49bb189c563
parentd87fd7680041ffcb3546c94240505d1d4a020a99 (diff)
restructured grammar checkers + small rule fixes: fdo#46542, fdo#46549, etc.
Change-Id: I087ae647d1c8ce57abd7d1f4dc196f25458f90dc
-rw-r--r--dictionaries/Dictionary_ru.mk1
-rw-r--r--dictionaries/en/Lightproof.py406
-rw-r--r--dictionaries/en/README_lightproof_en.txt4
-rw-r--r--dictionaries/en/pythonpath/lightproof_en.py4
-rw-r--r--dictionaries/en/pythonpath/lightproof_handler_en.py76
-rw-r--r--dictionaries/en/pythonpath/lightproof_impl_en.py334
-rw-r--r--dictionaries/hu_HU/Lightproof.py319
-rw-r--r--dictionaries/hu_HU/README_lightproof_hu_HU.txt11
-rw-r--r--dictionaries/hu_HU/pythonpath/lightproof_handler_hu_HU.py76
-rw-r--r--dictionaries/hu_HU/pythonpath/lightproof_hu_HU.py4
-rw-r--r--dictionaries/hu_HU/pythonpath/lightproof_impl_hu_HU.py246
-rw-r--r--dictionaries/ru_RU/Lightproof.py307
-rw-r--r--dictionaries/ru_RU/README_Lightproof_ru_RU.txt2
-rw-r--r--dictionaries/ru_RU/dialog/registry/schema/org/openoffice/Lightproof_ru_RU.xcs12
-rw-r--r--dictionaries/ru_RU/dialog/ru_RU.xdl25
-rw-r--r--dictionaries/ru_RU/dialog/ru_RU_en_US.properties3
-rw-r--r--dictionaries/ru_RU/dialog/ru_RU_ru_RU.properties25
-rw-r--r--dictionaries/ru_RU/pythonpath/lightproof_handler_ru_RU.py76
-rw-r--r--dictionaries/ru_RU/pythonpath/lightproof_impl_ru_RU.py233
-rw-r--r--dictionaries/ru_RU/pythonpath/lightproof_opts_ru_RU.py4
-rw-r--r--dictionaries/ru_RU/pythonpath/lightproof_ru_RU.py2
21 files changed, 1186 insertions, 984 deletions
diff --git a/dictionaries/Dictionary_ru.mk b/dictionaries/Dictionary_ru.mk
index 95c466b..4321862 100644
--- a/dictionaries/Dictionary_ru.mk
+++ b/dictionaries/Dictionary_ru.mk
@@ -23,6 +23,7 @@ $(eval $(call gb_Dictionary_add_root_files,dict-ru,\
$(eval $(call gb_Dictionary_add_files,dict-ru,dialog,\
dictionaries/ru_RU/dialog/ru_RU.xdl \
dictionaries/ru_RU/dialog/ru_RU_en_US.default \
+ dictionaries/ru_RU/dialog/ru_RU_ru_RU.properties \
))
$(eval $(call gb_Dictionary_add_files,dict-ru,pythonpath,\
diff --git a/dictionaries/en/Lightproof.py b/dictionaries/en/Lightproof.py
index 0897e75..cdc93c6 100644
--- a/dictionaries/en/Lightproof.py
+++ b/dictionaries/en/Lightproof.py
@@ -1,235 +1,26 @@
# -*- encoding: UTF-8 -*-
# Lightproof grammar checker for LibreOffice and OpenOffice.org
-# http://launchpad.net/lightproof
-# version 1.4.3 (2011-12-05)
-#
-# 2009-2011 (c) László Németh (nemeth at numbertext org), license: MPL 1.1 / GPLv3+ / LGPLv3+
+# 2009-2012 (c) László Németh (nemeth at numbertext org), license: MPL 1.1 / GPLv3+ / LGPLv3+
-import uno, unohelper, sys, traceback, re
+import uno, unohelper, os, sys, traceback
from lightproof_impl_en import locales
from lightproof_impl_en import pkg
+import lightproof_impl_en
import lightproof_handler_en
-from string import join
from com.sun.star.linguistic2 import XProofreader, XSupportedLocales
from com.sun.star.linguistic2 import ProofreadingResult, SingleProofreadingError
from com.sun.star.lang import XServiceInfo, XServiceName, XServiceDisplayName
from com.sun.star.lang import Locale
-from com.sun.star.text.TextMarkupType import PROOFREADING
-from com.sun.star.beans import PropertyValue
-
-# loaded rules
-langrule = {}
-# ignored rules
-ignore = {}
-
-# cache for morphogical analyses
-analyses = {}
-stems = {}
-suggestions = {}
-
-# assign Calc functions
-calcfunc = None
-
-# check settings
-def option(lang, opt):
- return lightproof_handler_en.get_option(lang.Language + "_" + lang.Country, opt)
-
-# filtering affix fields (ds, is, ts etc.)
-def onlymorph(st):
- if st != None:
- st = re.sub(r"^.*(st:|po:)", r"\1", st) # keep last word part
- st = re.sub(r"\b(?=[dit][sp]:)","@", st) # and its affixes
- st = re.sub(r"(?<!@)\b\w\w:\w+","", st).replace('@','').strip()
- return st
-
-# if the pattern matches all analyses of the input word,
-# return the last matched substring
-def _morph(rLoc, word, pattern, all, onlyaffix):
- global analyses
- if word == None:
- return None
- if word not in analyses:
- x = spellchecker.spell(u"<?xml?><query type='analyze'><word>" + word + "</word></query>", rLoc, ())
- if not x:
- return None
- t = x.getAlternatives()
- if not t:
- t = [""]
- analyses[word] = t[0]
- a = analyses[word].split("</a>")[:-1]
- result = None
- p = re.compile(pattern)
- for i in a:
- if onlyaffix:
- i = onlymorph(i)
- result = p.search(i)
- if result:
- result = result.group(0)
- if not all:
- return result
- elif all:
- return None
- return result
-
-def morph(rLoc, word, pattern, all=True):
- return _morph(rLoc, word, pattern, all, False)
-
-def affix(rLoc, word, pattern, all=True):
- return _morph(rLoc, word, pattern, all, True)
-
-def spell(rLoc, word):
- if word == None:
- return None
- return spellchecker.isValid(word, rLoc, ())
-
-# get the tuple of the stem of the word or an empty array
-def stem(rLoc, word):
- global stems
- if word == None:
- return []
- if not word in stems:
- x = spellchecker.spell(u"<?xml?><query type='stem'><word>" + word + "</word></query>", rLoc, ())
- if not x:
- return []
- t = x.getAlternatives()
- if not t:
- t = []
- stems[word] = list(t)
- return stems[word]
-
-# get the tuple of the morphological generation of a word or an empty array
-def generate(rLoc, word, example):
- if word == None:
- return []
- x = spellchecker.spell(u"<?xml?><query type='generate'><word>" + word + "</word><word>" + example + "</word></query>", rLoc, ())
- if not x:
- return []
- t = x.getAlternatives()
- if not t:
- t = []
- return list(t)
-
-# get suggestions
-def suggest(rLoc, word):
- global suggestions
- if word == None:
- return word
- if word not in suggestions:
- x = spellchecker.spell("_" + word, rLoc, ())
- if not x:
- return word
- t = x.getAlternatives()
- suggestions[word] = join(t, "\n")
- return suggestions[word]
-
-# get the nth word of the input string or None
-def word(s, n):
- a = re.match("(?u)( [-.\w%]+){" + str(n-1) + "}( [-.\w%]+)", s)
- if not a:
- return None
- return a.group(2)[1:]
-
-# get the (-)nth word of the input string or None
-def wordmin(s, n):
- a = re.search("(?u)([-.\w%]+ )([-.\w%]+ ){" + str(n-1) + "}$", s)
- if not a:
- return None
- return a.group(1)[:-1]
-
-def calc(funcname, par):
- global calcfunc
- global SMGR
- if calcfunc == None:
- calcfunc = SMGR.createInstance( "com.sun.star.sheet.FunctionAccess")
- if calcfunc == None:
- return None
- return calcfunc.callFunction(funcname, par)
-
-def proofread( nDocId, TEXT, LOCALE, nStartOfSentencePos, nSuggestedSentenceEndPos, rProperties ):
- global ignore
- aErrs = []
- s = TEXT[nStartOfSentencePos:nSuggestedSentenceEndPos]
- for i in get_rule(LOCALE):
- if i[0] and not str(i[0]) in ignore:
- for m in i[0].finditer(s):
- if not i[3] or eval(i[3]):
- aErr = uno.createUnoStruct( "com.sun.star.linguistic2.SingleProofreadingError" )
- aErr.nErrorStart = nStartOfSentencePos + m.start(0) # nStartOfSentencePos
- aErr.nErrorLength = m.end(0) - m.start(0)
- aErr.nErrorType = PROOFREADING
- aErr.aRuleIdentifier = str(i[0])
- iscap = (i[4] and m.group(0)[0:1].isupper())
- if i[1][0:1] == "=":
- aErr.aSuggestions = tuple(cap(eval(i[1][1:]).split("\n"), iscap, LOCALE))
- else:
- aErr.aSuggestions = tuple(cap(m.expand(i[1]).split("\n"), iscap, LOCALE))
- comment = i[2]
- if comment[0:1] == "=":
- comment = eval(comment[1:])
- aErr.aShortComment = comment.split("\\n")[0].strip()
- aErr.aFullComment = comment.split("\\n")[-1].strip()
- if "://" in aErr.aFullComment:
- p = PropertyValue()
- p.Name = "FullCommentURL"
- p.Value = aErr.aFullComment
- aErr.aFullComment = aErr.aShortComment
- aErr.aProperties = (p,)
- else:
- aErr.aProperties = ()
- aErrs = aErrs + [aErr]
- return tuple(aErrs)
-
-def cap(a, iscap, rLoc):
- if iscap:
- for i in range(0, len(a)):
- if a[i][0:1] == "i":
- if rLoc.Language == "tr" or rLoc.Language == "az":
- a[i] = u"\u0130" + a[i][1:]
- elif a[i][1:2] == "j" and rLoc.Language == "nl":
- a[i] = "IJ" + a[i][2:]
- else:
- a[i] = "I" + a[i][1:]
- else:
- a[i] = a[i].capitalize()
- return a
-
-def get_rule(rLocale):
- module = rLocale.Language
- if rLocale.Country != "":
- module = module + "_" + rLocale.Country
- try:
- return langrule[module]
- except:
- try:
- module = rLocale.Language
- return langrule[module]
- except:
- try:
- d = __import__("lightproof_" + pkg)
- except:
- print "Error: missing language data: " + module
- return None
- # compile regular expressions
- for i in d.dic:
- try:
- if re.compile("[(][?]iu[)]").match(i[0]):
- i += [True]
- i[0] = re.sub("[(][?]iu[)]", "(?u)", i[0])
- else:
- i += [False]
- i[0] = re.compile(i[0])
- except:
- print "Lightproof: bad rule -- ", i[0]
- i[0] = None
- langrule[module] = d.dic
- return langrule[module]
+# reload in obj.reload in Python 3
+try:
+ from obj import reload
+except:
+ pass
class Lightproof( unohelper.Base, XProofreader, XServiceInfo, XServiceName, XServiceDisplayName, XSupportedLocales):
def __init__( self, ctx, *args ):
- global spellchecker
- global SMGR
self.ctx = ctx
self.ServiceName = "com.sun.star.linguistic2.Proofreader"
self.ImplementationName = "org.openoffice.comp.pyuno.Lightproof." + pkg
@@ -240,8 +31,9 @@ class Lightproof( unohelper.Base, XProofreader, XServiceInfo, XServiceName, XSer
self.locales += [Locale(l[0], l[1], l[2])]
self.locales = tuple(self.locales)
currentContext = uno.getComponentContext()
- SMGR = currentContext.ServiceManager
- spellchecker = SMGR.createInstanceWithContext("com.sun.star.linguistic2.SpellChecker", currentContext)
+ lightproof_impl_en.SMGR = currentContext.ServiceManager
+ lightproof_impl_en.spellchecker = \
+ lightproof_impl_en.SMGR.createInstanceWithContext("com.sun.star.linguistic2.SpellChecker", currentContext)
lightproof_handler_en.load(currentContext)
# XServiceName method implementations
@@ -250,13 +42,13 @@ class Lightproof( unohelper.Base, XProofreader, XServiceInfo, XServiceName, XSer
# XServiceInfo method implementations
def getImplementationName (self):
- return self.ImplementationName
+ return self.ImplementationName
def supportsService(self, ServiceName):
- return (ServiceName in self.SupportedServiceNames)
+ return (ServiceName in self.SupportedServiceNames)
def getSupportedServiceNames (self):
- return self.SupportedServiceNames
+ return self.SupportedServiceNames
# XSupportedLocales
def hasLocale(self, aLocale):
@@ -282,6 +74,48 @@ class Lightproof( unohelper.Base, XProofreader, XServiceInfo, XServiceName, XSer
aRes.aLocale = rLocale
aRes.nStartOfSentencePosition = nStartOfSentencePos
aRes.nStartOfNextSentencePosition = nSuggestedSentenceEndPos
+ aRes.aProperties = ()
+ aRes.xProofreader = self
+ aRes.aErrors = ()
+ if len(rProperties) > 0 and rProperties[0].Name == "Update":
+ try:
+ import lightproof_compile_en
+ try:
+ code = lightproof_compile_en.c(rProperties[0].Value, rLocale.Language, True)
+ except Exception as e:
+ aRes.aText, aRes.nStartOfSentencePosition = e
+ return aRes
+ path = lightproof_impl_en.get_path()
+ f = open(path.replace("_impl", ""), "w")
+ f.write("dic = %s" % code["rules"])
+ f.close()
+ if pkg in lightproof_impl_en.langrule:
+ mo = lightproof_impl_en.langrule[pkg]
+ reload(mo)
+ lightproof_impl_en.compile_rules(mo.dic)
+ lightproof_impl_en.langrule[pkg] = mo
+ if "code" in code:
+ f = open(path, "r")
+ ft = f.read()
+ f.close()
+ f = open(path, "w")
+ f.write(ft[:ft.find("# [code]") + 8] + "\n" + code["code"])
+ f.close()
+ try:
+ reload(lightproof_impl_en)
+ except Exception as e:
+ aRes.aText = e.args[0]
+ if e.args[1][3] == "": # "expected an indented block" (end of file)
+ aRes.nStartOfSentencePosition = len(rText.split("\n"))
+ else:
+ aRes.nStartOfSentencePosition = rText.split("\n").index(e.args[1][3][:-1]) + 1
+ return aRes
+ aRes.aText = ""
+ return aRes
+ except:
+ if 'PYUNO_LOGLEVEL' in os.environ:
+ print(traceback.format_exc())
+
l = rText[nSuggestedSentenceEndPos:nSuggestedSentenceEndPos+1]
while l == " ":
aRes.nStartOfNextSentencePosition = aRes.nStartOfNextSentencePosition + 1
@@ -291,131 +125,31 @@ class Lightproof( unohelper.Base, XProofreader, XServiceInfo, XServiceName, XSer
aRes.nBehindEndOfSentencePosition = aRes.nStartOfNextSentencePosition
try:
- aRes.aErrors = proofread( nDocId, rText, rLocale, \
+ aRes.aErrors = lightproof_impl_en.proofread( nDocId, rText, rLocale, \
nStartOfSentencePos, aRes.nBehindEndOfSentencePosition, rProperties)
- except:
- # traceback.print_exc(file=sys.stdout)
- aRes.aErrors = ()
- aRes.aProperties = ()
- aRes.xProofreader = self
+ except Exception as e:
+ if len(rProperties) > 0 and rProperties[0].Name == "Debug" and len(e.args) == 2:
+ aRes.aText, aRes.nStartOfSentencePosition = e
+ else:
+ if 'PYUNO_LOGLEVEL' in os.environ:
+ print(traceback.format_exc())
return aRes
def ignoreRule(self, rid, aLocale):
- global ignore
- ignore[rid] = 1
+ lightproof_impl_en.ignore[rid] = 1
def resetIgnoreRules(self):
- global ignore
- ignore = {}
+ lightproof_impl_en.ignore = {}
# XServiceDisplayName
def getServiceDisplayName(self, aLocale):
- return "Lightproof Grammar Checker (" + pkg + ")"
+ return lightproof_impl_en.name
g_ImplementationHelper = unohelper.ImplementationHelper()
g_ImplementationHelper.addImplementation( Lightproof, \
- "org.openoffice.comp.pyuno.Lightproof." + pkg,
- ("com.sun.star.linguistic2.Proofreader",),)
+ "org.openoffice.comp.pyuno.Lightproof." + pkg,
+ ("com.sun.star.linguistic2.Proofreader",),)
g_ImplementationHelper.addImplementation( lightproof_handler_en.LightproofOptionsEventHandler, \
- "org.openoffice.comp.pyuno.LightproofOptionsEventHandler." + pkg,
- ("com.sun.star.awt.XContainerWindowEventHandler",),)
-# pattern matching for common English abbreviations
-abbrev = re.compile("(?i)\\b([a-z]|acct|approx|appt|apr|apt|assoc|asst|aug|ave|avg|co(nt|rp)?|ct|dec|defn|dept|dr|eg|equip|esp|est|etc|excl|ext|feb|fri|ft|govt?|hrs?|ib(id)?|ie|in(c|t)?|jan|jr|jul|lit|ln|mar|max|mi(n|sc)?|mon|Mrs?|mun|natl?|neg?|no(rm|s|v)?|nw|obj|oct|org|orig|pl|pos|prev|proj|psi|qty|rd|rec|rel|reqd?|resp|rev|sat|sci|se(p|pt)?|spec(if)?|sq|sr|st|subj|sun|sw|temp|thurs|tot|tues|univ|var|vs)\\.")
-
-# pattern for paragraph checking
-paralcap = re.compile(u"(?u)^[a-z].*[.?!] [A-Z].*[.?!][)\u201d]?$")
-
-
-punct = { "?": "question mark", "!": "exclamation mark",
- ",": "comma", ":": "colon", ";": "semicolon",
- "(": "opening parenthesis", ")": "closing parenthesis",
- "[": "opening square bracket", "]": "closing square bracket",
- u"\u201c": "opening quotation mark", u"\u201d": "closing quotation mark"}
-
-
-aA = set(["eucalypti", "eucalyptus", "Eucharist", "Eucharistic",
-"euchre", "euchred", "euchring", "Euclid", "euclidean", "Eudora",
-"eugene", "Eugenia", "eugenic", "eugenically", "eugenicist",
-"eugenicists", "eugenics", "Eugenio", "eukaryote", "Eula", "eulogies",
-"eulogist", "eulogists", "eulogistic", "eulogized", "eulogizer",
-"eulogizers", "eulogizing", "eulogy", "eulogies", "Eunice", "eunuch",
-"eunuchs", "Euphemia", "euphemism", "euphemisms", "euphemist",
-"euphemists", "euphemistic", "euphemistically", "euphonious",
-"euphoniously", "euphonium", "euphony", "euphoria", "euphoric",
-"Euphrates", "euphuism", "Eurasia", "Eurasian", "Eurasians", "eureka",
-"eurekas", "eurhythmic", "eurhythmy", "Euridyce", "Euripides", "euripus",
-"Euro", "Eurocentric", "Euroclydon", "Eurocommunism", "Eurocrat",
-"eurodollar", "Eurodollar", "Eurodollars", "Euromarket", "Europa",
-"Europe", "European", "Europeanisation", "Europeanise", "Europeanised",
-"Europeanization", "Europeanize", "Europeanized", "Europeans", "europium",
-"Eurovision", "Eustace", "Eustachian", "Eustacia", "euthanasia",
-"Ewart", "ewe", "Ewell", "ewer", "ewers", "Ewing", "once", "one",
-"oneness", "ones", "oneself", "onetime", "oneway", "oneyear", "u",
-"U", "UART", "ubiquitous", "ubiquity", "Udale", "Udall", "UEFA",
-"Uganda", "Ugandan", "ugric", "UK", "ukase", "Ukraine", "Ukrainian",
-"Ukrainians", "ukulele", "Ula", "ululated", "ululation", "Ulysses",
-"UN", "unanimity", "unanimous", "unanimously", "unary", "Unesco",
-"UNESCO", "UNHCR", "uni", "unicameral", "unicameralism", "Unicef",
-"UNICEF", "unicellular", "Unicode", "unicorn", "unicorns", "unicycle",
-"unicyclist", "unicyclists", "unidimensional", "unidirectional",
-"unidirectionality", "unifiable", "unification", "unified", "unifier",
-"unifilar", "uniform", "uniformally", "uniformed", "uniformer",
-"uniforming", "uniformisation", "uniformise", "uniformitarian",
-"uniformitarianism", "uniformity", "uniformly", "uniformness", "uniforms",
-"unify", "unifying", "unijugate", "unilateral", "unilateralisation",
-"unilateralise", "unilateralism", "unilateralist", "unilaterally",
-"unilinear", "unilingual", "uniliteral", "uniliteralism", "uniliteralist",
-"unimodal", "union", "unionism", "unionist", "unionists", "unionisation",
-"unionise", "unionised", "unionising", "unionization", "unionize",
-"unionized", "unionizing", "unions", "unipolar", "uniprocessor",
-"unique", "uniquely", "uniqueness", "uniquer", "Uniroyal", "unisex",
-"unison", "Unisys", "unit", "Unitarian", "Unitarianism", "Unitarians",
-"unitary", "unite", "united", "unitedly", "uniter", "unites", "uniting",
-"unitize", "unitizing", "unitless", "units", "unity", "univ", "Univac",
-"univalent", "univalve", "univariate", "universal", "universalisation",
-"universalise", "universalised", "universaliser", "universalisers",
-"universalising", "universalism", "universalist", "universalistic",
-"universality", "universalisation", "universalization", "universalize",
-"universalized", "universalizer", "universalizers", "universalizing",
-"universally", "universalness", "universe", "universes", "universities",
-"university", "univocal", "Unix", "uracil", "Urals", "uranium", "Uranus",
-"uranyl", "urate", "urea", "uremia", "uremic", "ureter", "urethane",
-"urethra", "urethral", "urethritis", "Urey", "Uri", "uric", "urinal",
-"urinalysis", "urinary", "urinated", "urinating", "urination", "urine",
-"urogenital", "urokinase", "urologist", "urologists", "urology",
-"Uruguay", "Uruguayan", "Uruguayans", "US", "USA", "usable", "usage",
-"usages", "use", "used", "useful", "usefulness", "usefully", "useless",
-"uselessly", "uselessness", "Usenet", "user", "users", "uses", "using",
-"usual", "usually", "usurer", "usurers", "usuress", "usurial", "usurious",
-"usurp", "usurpation", "usurped", "usurper", "usurping", "usurps",
-"usury", "Utah", "utensil", "utensils", "uterine", "uterus", "Utica",
-"utilitarian", "utilitarianism", "utilities", "utility", "utilizable",
-"utilization", "utilize", "utilized", "utilizes", "utilizing", "utopia",
-"utopian", "utopians", "utopias", "Utrecht", "Uttoxeter", "uvula",
-"uvular"])
-
-aAN = set(["f", "F", "FBI", "FDA", "heir", "heirdom", "heired",
-"heirer", "heiress", "heiring", "heirloom", "heirship", "honest",
-"honester", "honestly", "honesty", "honor", "honorable", "honorableness",
-"honorably", "honorarium", "honorary", "honored", "honorer", "honorific",
-"honoring", "honors", "honour", "honourable", "honourableness",
-"honourably", "honourarium", "honourary", "honoured", "honourer",
-"honourific", "honouring", "Honours", "hors", "hour", "hourglass", "hourlong",
-"hourly", "hours", "l", "L", "LCD", "m", "M", "MBA", "MP", "mpg", "mph",
-"MRI", "MSc", "MTV", "n", "N", "NBA", "NBC", "NFL", "NGO", "NHL", "r",
-"R", "s", "S", "SMS", "sos", "SOS", "SPF", "std", "STD", "SUV", "x",
-"X", "XML"])
-
-aB = set(["H", "hallucination", "haute", "hauteur", "herb", "herbaceous", "herbal",
-"herbalist", "herbalism", "heroic", "hilarious", "historian", "historic", "historical",
-"homage", "homophone", "horrendous", "hospitable", "horrific", "hotel", "hypothesis", "Xmas"])
-
-def measurement(mnum, min, mout, mstr, decimal, remove):
- if min == "ft" or min == "in" or min == "mi":
- mnum = mnum.replace(" 1/2", ".5").replace(u" \xbd", ".5").replace(u"\xbd",".5")
- m = calc("CONVERT_ADD", (float(eval(mnum.replace(remove, "").replace(decimal, ".").replace(u"\u2212", "-"))), min, mout))
- a = list(set([str(calc("ROUND", (m, 0)))[:-2], str(calc("ROUND", (m, 1))), str(calc("ROUND", (m, 2))), str(m)])) # remove duplicated rounded items
- a.sort(lambda x, y: len(x) - len(y)) # sort by string length
- return join(a, mstr + "\n").replace(".", decimal).replace("-", u"\u2212") + mstr
-
+ "org.openoffice.comp.pyuno.LightproofOptionsEventHandler." + pkg,
+ ("com.sun.star.awt.XContainerWindowEventHandler",),)
diff --git a/dictionaries/en/README_lightproof_en.txt b/dictionaries/en/README_lightproof_en.txt
index 0e6f33b..43c91fe 100644
--- a/dictionaries/en/README_lightproof_en.txt
+++ b/dictionaries/en/README_lightproof_en.txt
@@ -1,3 +1,3 @@
English sentence checker for LibreOffice
-see http://launchpad.net/lightproof and http://numbertext.org/lightproof
-2011 (c) László Németh, license: MPL 1.1 / GPLv3+ / LGPLv3+
+see git://anongit.freedesktop.org/libreoffice/lightproof
+2011-2012 (c) László Németh, license: MPL 1.1 / GPLv3+ / LGPLv3+
diff --git a/dictionaries/en/pythonpath/lightproof_en.py b/dictionaries/en/pythonpath/lightproof_en.py
index a437797..3108489 100644
--- a/dictionaries/en/pythonpath/lightproof_en.py
+++ b/dictionaries/en/pythonpath/lightproof_en.py
@@ -1 +1,3 @@
-dic = [[u'(?u)(?<![-\\w\u2013.,\xad])and and(?![-\\w\u2013\xad])', u'and', u'Did you mean:', False], [u'(?u)(?<![-\\w\u2013.,\xad])or or(?![-\\w\u2013\xad])', u'or', u'Did you mean:', False], [u'(?u)(?<![-\\w\u2013.,\xad])for for(?![-\\w\u2013\xad])', u'for', u'Did you mean:', False], [u'(?u)(?<![-\\w\u2013.,\xad])the the(?![-\\w\u2013\xad])', u'the', u'Did you mean:', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Yy][Ii][Nn][Gg] [Aa][Nn][Dd] [Yy][Aa][Nn][Gg](?![-\\w\u2013\xad])', u'yin and yang', u'Did you mean:', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ss][Cc][Oo][Tt] [Ff][Rr][Ee][Ee](?![-\\w\u2013\xad])', u'scot-free\\nscotfree', u'Did you mean:', False], [u"(?iu)(?<![-\\w\u2013.,\xad])([Yy][Oo][Uu][Rr]|[Hh][Ee][Rr]|[Oo][Uu][Rr]|[Tt][Hh][Ee][Ii][Rr])['\u2019][Ss](?![-\\w\u2013\xad])", u'\\1s', u'Possessive pronoun: \\n http://en.wikipedia.org/wiki/Possessive_pronoun', False], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<a_1>[Aa])n(?P<_>[ ][\'\u2018"\u201c]?)(?P<vow_1>[aeiouAEIOU]\\w*)(?P<etc_1>[-\u2013\'\u2019\\w]*)(?![-\\w\u2013\xad])', u'\\g<a_1>\\g<_>\\g<vow_1>\\g<etc_1>', u'Did you mean: \\n http://en.wikipedia.org/wiki/English_articles#Discrimination_between_a_and_an', u'm.group("vow_1") in aA or m.group("vow_1").lower() in aA'], [u'(?u)(?<![-\\w\u2013.,\xad])a(?P<_>[ ][\'\u2018"\u201c]?)(?P<vow_1>[aeiouAEIOU]\\w*)(?P<etc_1>[-\u2013\'\u2019\\w]*)(?![-\\w\u2013\xad])', u'an\\g<_>\\g<vow_1>\\g<etc_1>', u'Bad article? \\n http://en.wikipedia.org/wiki/English_articles#Discrimination_between_a_and_an', u'(m.group("vow_1") <> m.group("vow_1").upper()) and not (m.group("vow_1") in aA or m.group("vow_1").lower() in aA) and spell(LOCALE,m.group("vow_1"))'], [u'(?u)(?<![-\\w\u2013.,\xad])a(?P<_>[ ][\'\u2018"\u201c]?)(?P<con_1>[bcdfghj-np-tv-zBCDFGHJ-NP-TV-Z]\\w*)(?P<etc_1>[-\u2013\'\u2019\\w]*)(?![-\\w\u2013\xad])', u'an\\g<_>\\g<con_1>\\g<etc_1>', u'Did you mean: \\n http://en.wikipedia.org/wiki/English_articles#Discrimination_between_a_and_an', u'm.group("con_1") in aAN or m.group("con_1").lower() in aAN'], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<a_1>[Aa])n(?P<_>[ ][\'\u2018"\u201c]?)(?P<con_1>[bcdfghj-np-tv-zBCDFGHJ-NP-TV-Z]\\w*)(?P<etc_1>[-\u2013\'\u2019\\w]*)(?![-\\w\u2013\xad])', u'\\g<a_1>\\g<_>\\g<con_1>\\g<etc_1>', u'Bad article? \\n http://en.wikipedia.org/wiki/English_articles#Discrimination_between_a_and_an', u'(m.group("con_1") <> m.group("con_1").upper()) and not (m.group("con_1") in aA or m.group("con_1").lower() in aAN) and not m.group("con_1") in aB and spell(LOCALE,m.group("con_1"))'], [u'(?u)((?<=[!?.] )|^)A(?P<_>[ ][\'\u2018"\u201c]?)(?P<vow_1>[aeiouAEIOU]\\w*)(?P<etc_1>[-\u2013\'\u2019\\w]*)(?![-\\w\u2013\xad])', u'An\\g<_>\\g<vow_1>\\g<etc_1>', u'Bad article? \\n http://en.wikipedia.org/wiki/English_articles#Discrimination_between_a_and_an', u'(m.group("vow_1") <> m.group("vow_1").upper()) and not (m.group("vow_1") in aA or m.group("vow_1").lower() in aA) and spell(LOCALE,m.group("vow_1"))'], [u'(?u)((?<=[!?.] )|^)A(?P<_>[ ][\'\u2018"\u201c]?)(?P<con_1>[bcdfghj-np-tv-zBCDFGHJ-NP-TV-Z]\\w*)(?P<etc_1>[-\u2013\'\u2019\\w]*)(?![-\\w\u2013\xad])', u'An\\g<_>\\g<con_1>\\g<etc_1>', u'Did you mean: \\n http://en.wikipedia.org/wiki/English_articles#Discrimination_between_a_and_an', u'm.group("con_1") in aAN or m.group("con_1").lower() in aAN'], [u'(?u)(?<![-\\w\u2013.,\xad])a(?P<_>[ ][\'\u2018"\u201c]?)(?P<nvow_1>(8[0-9]*|1[18](000)*)(th)?)(?P<etc_1>[-\u2013\'\u2019\\w]*)(?![-\\w\u2013\xad])', u'an\\g<_>\\g<nvow_1>\\g<etc_1>', u'Did you mean: \\n http://en.wikipedia.org/wiki/English_articles#Discrimination_between_a_and_an', False], [u'(?u)((?<=[!?.] )|^)A(?P<_>[ ][\'\u2018"\u201c]?)(?P<nvow_1>(8[0-9]*|1[18](000)*)(th)?)(?P<etc_1>[-\u2013\'\u2019\\w]*)(?![-\\w\u2013\xad])', u'An\\g<_>\\g<nvow_1>\\g<etc_1>', u'Did you mean: \\n http://en.wikipedia.org/wiki/English_articles#Discrimination_between_a_and_an', False], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<a_1>[Aa])n(?P<_>[ ][\'\u2018"\u201c]?)(?P<ncon_1>[0-79][0-9]*)(?P<etc_1>[-\u2013\'\u2019\\w]*)(?![-\\w\u2013\xad])', u'\\g<a_1>\\g<_>\\g<ncon_1>\\g<etc_1>', u'Did you mean: \\n http://en.wikipedia.org/wiki/English_articles#Discrimination_between_a_and_an', u'not m.group("ncon_1")[:2] in ["11", "18"]'], [u'(?u)(?<![-\\w\u2013.,\xad])(^)(?P<low_1>[a-z]+)(?![-\\w\u2013\xad])', u'= m.group("low_1").capitalize()', u'Missing capitalization?', u'paralcap.search(TEXT) and not abbrev.search(TEXT)'], [u'(?u)((?<=[!?.] )|^)(?P<low_1>[a-z]+)(?![-\\w\u2013\xad])', u'= m.group("low_1").capitalize()', u'Missing capitalization?', u'option(LOCALE,"cap") and not abbrev.search(TEXT)'], [u'(?u) ([.?!,:;)\u201d\\]])\\b', u'\\1 ', u'Reversed space and punctuation?', False], [u'(?u) +[.]', u'.', u'Extra space before the period?', u'LOCALE.Country == "US"'], [u'(?u) +[.]', u'.', u'Extra space before the full stop?', u'LOCALE.Country != "US"'], [u'(?u) +([?!,:;)\u201d\\]])', u'\\1', u'= "Extra space before the " + punct[m.group(1)] + "?"', False], [u'(?u)([([\u201c]) ', u'\\1', u'= "Extra space after the " + punct[m.group(1)] + "?"', False], [u'(?u)\\b(---?| --? )\\b', u' \u2013 \\n\u2014', u'En dash or em dash:', u'not option(LOCALE,"ndash") and not option(LOCALE,"mdash")'], [u'(?u)\\b(---?| --? |\u2014)\\b', u' \u2013 ', u'En dash:', u'option(LOCALE,"ndash") and not option(LOCALE,"mdash")'], [u'(?u)\\b(---?| --? | \u2013 )\\b', u'\u2014', u'Em dash:', u'option(LOCALE,"mdash")'], [u'(?u)(?P<number_1>\\d+([.]\\d+)?)(x| x )(?P<number_2>\\d+([.]\\d+)?)', u'\\g<number_1>\xd7\\g<number_2>', u'Multiplication sign. \\n http://en.wikipedia.org/wiki/Multiplication_sign', u'option(LOCALE,"times")'], [u'(?u)(?P<Abc_1>[a-zA-Z]+)(?P<pun_1>[?!,:;%\u2030\u2031\u02da\u201c\u201d\u2018])(?P<Abc_2>[a-zA-Z]+)', u'\\g<Abc_1>\\g<pun_1> \\g<Abc_2>', u'Missing space?', False], [u'(?u)(?P<abc_1>[a-z]+)[.](?P<ABC_1>[A-Z]+)', u'\\g<abc_1>. \\g<ABC_1>', u'Missing space?', False], [u'(?u)[)]', u'', u'Extra closing parenthesis?', u'option(LOCALE,"pair") and not "(" in TEXT'], [u'(?u)[(]', u'', u'Extra opening parenthesis?', u'option(LOCALE,"pair") and TEXT[-1] in u"?!;:\u201d\u2019" and not ")" in TEXT'], [u'(?u)(?<![0-9])\u201d', u'', u'Extra quotation mark?', u'option(LOCALE,"pair") and not u"\u201c" in TEXT'], [u'(?u)(?<=[0-9])\u201d', u'\u2033\\n', u'Bad double prime or extra quotation mark?', u'option(LOCALE,"apostrophe") and not u"\u201c" in TEXT'], [u'(?u)\u201c', u'', u'Extra quotation mark?', u'option(LOCALE,"pair") and TEXT[-1] in u"?!;:\u201d\u2019" and not u"\u201d" in TEXT'], [u'(?u)[.]{3}', u'\u2026', u'Ellipsis.', u'option(LOCALE,"ellipsis")'], [u'(?u)\\b {2,3}(\\b|$)', u'\\1 ', u'Extra space.', u'option(LOCALE,"spaces")'], [u'(?u)(^|\\b|(?P<pun_1>[?!,:;%\u2030\u2031\u02da\u201c\u201d\u2018])|[.]) {2,3}(\\b|$)', u'\\1 ', u'Extra space.', u'option(LOCALE,"spaces2")'], [u'(?u)(^|\\b|(?P<pun_1>[?!,:;%\u2030\u2031\u02da\u201c\u201d\u2018])|[.]) {4,}(\\b|$)', u'\\1 \\n\t', u'Change multiple spaces to a single space or a tabulator:', u'option(LOCALE,"spaces3")'], [u'(?iu)[\\"\u201c\u201d\u201f\u201e]((?P<abc_1>[a-zA-Z]+)[^\\"\u201c\u201d\u201f\u201e]*)[\\"\u201c\u201f]', u'\u201c\\1\u201d', u'Quotation marks.', u'option(LOCALE,"quotation")'], [u'(?iu)[\\"\u201d\u201f\u201e]((?P<abc_1>[a-zA-Z]+)[^\\"\u201c\u201d\u201f\u201e]*)[\\"\u201c\u201d\u201f]', u'\u201c\\1\u201d', u'Quotation marks.', u'option(LOCALE,"quotation")'], [u"(?iu)'(?P<abc_1>[a-zA-Z]+)'", u'\u2018\\g<abc_1>\u2019', u'Quotation marks.', u'option(LOCALE,"apostrophe")'], [u'(?iu)[\\"\u201d\u201f\u201e]((?P<abc_1>[a-zA-Z]+)[^\\"\u201c\u201d\u201f\u201e]*)[\\"\u201c\u201d\u201f]', u'\u201c\\1\u201d', u'Quotation marks.', u'option(LOCALE,"apostrophe")'], [u"(?iu)(?P<Abc_1>[a-zA-ZA-Z]+)'(?P<w_1>\\w*)", u'\\g<Abc_1>\u2019\\g<w_1>', u'Replace typewriter apostrophe or quotation mark:', u'option(LOCALE,"apostrophe")'], [u"(?u)(?<= )'(?P<Abc_1>[a-zA-Z]+)", u'\u2018\\g<Abc_1>\\n\u2019\\g<Abc_1>', u'Replace typewriter quotation mark or apostrophe:', u'option(LOCALE,"apostrophe")'], [u"(?u)^'(?P<Abc_1>[a-zA-Z]+)", u'\u2018\\g<Abc_1>\\n\u2019\\g<Abc_1>', u'Replace typewriter quotation mark or apostrophe:', u'option(LOCALE,"apostrophe")'], [u'(?u)\\b(?P<d2_1>\\d\\d)(?P<d_1>\\d\\d\\d)\\b', u'\\g<d2_1>,\\g<d_1>\\n\\g<d2_1>\u202f\\g<d_1>', u'Use thousand separator (common or ISO).', u'option(LOCALE,"numsep")'], [u'(?u)\\b(?P<D_1>\\d{1,3})(?P<d_1>\\d\\d\\d)(?P<d_2>\\d\\d\\d)\\b', u'\\g<D_1>,\\g<d_1>,\\g<d_2>\\n\\g<D_1>\u202f\\g<d_1>\u202f\\g<d_2>', u'Use thousand separators (common or ISO).', u'option(LOCALE,"numsep")'], [u'(?u)\\b(?P<D_1>\\d{1,3})(?P<d_1>\\d\\d\\d)(?P<d_2>\\d\\d\\d)(?P<d_3>\\d\\d\\d)\\b', u'\\g<D_1>,\\g<d_1>,\\g<d_2>,\\g<d_3>\\n\\g<D_1>\u202f\\g<d_1>\u202f\\g<d_2>\u202f\\g<d_3>', u'Use thousand separators (common or ISO).', u'option(LOCALE,"numsep")'], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<Abc_1>[a-zA-Z]+) \\1(?![-\\w\u2013\xad])', u'\\g<Abc_1>', u'Word duplication?', u'option(LOCALE,"dup")'], [u'(?u)(?<![-\\w\u2013.,\xad])([Tt])his (?P<abc_1>[a-z]+)(?![-\\w\u2013\xad])', u'\\1hese \\g<abc_1>\\n\\1his, \\g<abc_1>', u'Did you mean:', u'option(LOCALE,"grammar") and morph(LOCALE,m.group("abc_1"), "Ns")'], [u"(?u)(?<![-\\w\u2013.,\xad])with it['\u2019]s(?![-\\w\u2013\xad])", u'with its\\nwith, it\u2019s', u'Did you mean:', u'option(LOCALE,"grammar")'], [u"(?iu)(?<![-\\w\u2013.,\xad])([Ii][Tt]|[Ss]?[Hh][Ee]) [Dd][Oo][Nn]['\u2019][Tt](?![-\\w\u2013\xad])", u'\\1 doesn\u2019t', u'Did you mean:', u'option(LOCALE,"grammar")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:[,.]\\d+)*) (\xb0F|Fahrenheit)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "F", "C", u" \xb0C", ".", ",")', u'Convert to Celsius:', u'option(LOCALE,"metric")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:[,.]\\d+)*) (\xb0C|Celsius)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "C", "F", u" \xb0F", ".", ",")', u'Convert to Fahrenheit:', u'option(LOCALE,"nonmetric")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:[,.]\\d+)*(?: 1/2| ?\xbd)?) (ft|foot|feet)(?! [1-9])(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "ft", "cm", " cm", ".", ",") + "\\n" + measurement(m.group(1), "ft", "m", " m", ".", ",")', u'Convert to metric:', u'option(LOCALE,"metric")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:[,.]\\d+)*(?: 1/2| ?\xbd)?) ft[.]? ([0-9]+(?: 1/2| ?\xbd)?) in(?![-\\w\u2013\xad])', u'= measurement(m.group(1) + "*12+" + m.group(2), "in", "cm", " cm", ".", ",") + "\\n" + measurement(m.group(1) + "*12+" + m.group(2), "in", "m", " m", ".", ",")', u'Convert to metric:', u'option(LOCALE,"metric")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:[,.]\\d+)*(?: 1/2| ?\xbd)?) in(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "in", "mm", " mm", ".", ",") + "\\n" + measurement(m.group(1), "in", "cm", " cm", ".", ",") + "\\n" + measurement(m.group(1), "in", "m", " m", ".", ",")', u'Convert to metric:', u'option(LOCALE,"metric")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:[,.]\\d+)*) mm(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "mm", "in", " in", ".", ",")', u'Convert from metric:', u'option(LOCALE,"nonmetric")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:[,.]\\d+)*) cm(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "cm", "in", " in", ".", ",") + "\\n" + measurement(m.group(1), "cm", "ft", " ft", ".", ",")', u'Convert from metric:', u'option(LOCALE,"nonmetric")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:[,.]\\d+)*) (m|meter|metre)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "m", "in", " in", ".", ",") + "\\n" + measurement(m.group(1), "m", "ft", " ft", ".", ",") + "\\n" + measurement(m.group(1), "m", "mi", " mi", ".", ",")', u'Convert from metric:', u'option(LOCALE,"nonmetric")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:[,.]\\d+)*(?: 1/2| ?\xbd)?) miles?(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "mi", "m", " m", ".", ",") + "\\n" + measurement(m.group(1), "mi", "km", " km", ".", ",")', u'Convert to metric:', u'option(LOCALE,"metric")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:[,.]\\d+)*) km(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "km", "mi", " mi", ".", ",")', u'Convert to miles:', u'option(LOCALE,"nonmetric")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:,\\d+)?) (yd|yards?)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "yd", "m", " m", ".", ",")', u'Convert to metric:', u'option(LOCALE,"metric")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:,\\d+)?) (gal(lons?)?)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "gal", "l", " l", ".", ",") + "\\n" + measurement(m.group(1), "uk_gal", "l", " l (in UK)", ".", ",")', u'Convert to metric:', u'option(LOCALE,"metric")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:,\\d+)?) (pint)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "pt", "dl", " dl", ".", ",") + "\\n" + measurement(m.group(1), "uk_pt", "dl", " dl (in UK)", ".", ",") + "\\n" + measurement(m.group(1), "pt", "l", " l", ".", ",") + "\\n" + measurement(m.group(1), "uk_pt", "l", " l (in UK)", ".", ",")', u'Convert to metric:', u'option(LOCALE,"metric")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:,\\d+)?) (l|L|litres?|liters?)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "l", "gal", " gal", ".", ",") + "\\n" + measurement(m.group(1), "l", "gal", " gal (in UK)", ".", ",")', u'Convert to gallons:', u'option(LOCALE,"nonmetric")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:[,.]\\d+)*) lbs?[.]?(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "lbm", "kg", " kg", ".", ",")', u'Convert to metric:', u'option(LOCALE,"metric")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:[,.]\\d+)*) kg[.]?(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "kg", "lbm", " lb", ".", ",")', u'Convert to pounds:', u'option(LOCALE,"nonmetric")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:[,.]\\d+)*) mph(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "mph", "km/h", " km/h", ".", ",")', u'Convert to km/hour:', u'option(LOCALE,"metric")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:[,.]\\d+)*) km/h(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "km/h", "mph", " mph", ".", ",")', u'Convert to miles/hour:', u'option(LOCALE,"nonmetric")']] \ No newline at end of file
+# -*- encoding: UTF-8 -*-
+dic = [[u'(?u)(?<![-\\w\u2013.,\xad])and and(?![-\\w\u2013\xad])', u'and', u'Did you mean:', False, 0], [u'(?u)(?<![-\\w\u2013.,\xad])or or(?![-\\w\u2013\xad])', u'or', u'Did you mean:', False, 0], [u'(?u)(?<![-\\w\u2013.,\xad])for for(?![-\\w\u2013\xad])', u'for', u'Did you mean:', False, 0], [u'(?u)(?<![-\\w\u2013.,\xad])the the(?![-\\w\u2013\xad])', u'the', u'Did you mean:', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Yy][Ii][Nn][Gg] [Aa][Nn][Dd] [Yy][Aa][Nn][Gg](?![-\\w\u2013\xad])', u'yin and yang', u'Did you mean:', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ss][Cc][Oo][Tt] [Ff][Rr][Ee][Ee](?![-\\w\u2013\xad])', u'scot-free\\nscotfree', u'Did you mean:', False, 0], [u"(?iu)(?<![-\\w\u2013.,\xad])([Yy][Oo][Uu][Rr]|[Hh][Ee][Rr]|[Oo][Uu][Rr]|[Tt][Hh][Ee][Ii][Rr])['\u2019][Ss](?![-\\w\u2013\xad])", u'\\1s', u'Possessive pronoun: \\n http://en.wikipedia.org/wiki/Possessive_pronoun', False, 0], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<a_1>[Aa])n(?P<_>[ ][\'\u2018"\u201c]?)(?P<vow_1>[aeiouAEIOU]\\w*)(?P<etc_1>[-\u2013\'\u2019\\w]*)(?![-\\w\u2013\xad])', u'\\g<a_1>\\g<_>\\g<vow_1>\\g<etc_1>', u'Did you mean: \\n http://en.wikipedia.org/wiki/English_articles#Distinction_between_a_and_an', u'm.group("vow_1") in aA or m.group("vow_1").lower() in aA', 0], [u'(?u)(?<![-\\w\u2013.,\xad])a(?P<_>[ ][\'\u2018"\u201c]?)(?P<vow_1>[aeiouAEIOU]\\w*)(?P<etc_1>[-\u2013\'\u2019\\w]*)(?![-\\w\u2013\xad])', u'an\\g<_>\\g<vow_1>\\g<etc_1>', u'Bad article? \\n http://en.wikipedia.org/wiki/English_articles#Distinction_between_a_and_an', u'(m.group("vow_1") <> m.group("vow_1").upper()) and not (m.group("vow_1") in aA or m.group("vow_1").lower() in aA) and spell(LOCALE,m.group("vow_1"))', 0], [u'(?u)(?<![-\\w\u2013.,\xad])a(?P<_>[ ][\'\u2018"\u201c]?)(?P<con_1>[bcdfghj-np-tv-zBCDFGHJ-NP-TV-Z]\\w*)(?P<etc_1>[-\u2013\'\u2019\\w]*)(?![-\\w\u2013\xad])', u'an\\g<_>\\g<con_1>\\g<etc_1>', u'Did you mean: \\n http://en.wikipedia.org/wiki/English_articles#Distinction_between_a_and_an', u'm.group("con_1") in aAN or m.group("con_1").lower() in aAN', 0], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<a_1>[Aa])n(?P<_>[ ][\'\u2018"\u201c]?)(?P<con_1>[bcdfghj-np-tv-zBCDFGHJ-NP-TV-Z]\\w*)(?P<etc_1>[-\u2013\'\u2019\\w]*)(?![-\\w\u2013\xad])', u'\\g<a_1>\\g<_>\\g<con_1>\\g<etc_1>', u'Bad article? \\n http://en.wikipedia.org/wiki/English_articles#Distinction_between_a_and_an', u'(m.group("con_1") <> m.group("con_1").upper()) and not (m.group("con_1") in aA or m.group("con_1").lower() in aAN) and not m.group("con_1") in aB and spell(LOCALE,m.group("con_1"))', 0], [u'(?u)((?<=[!?.] )|^)A(?P<_>[ ][\'\u2018"\u201c]?)(?P<vow_1>[aeiouAEIOU]\\w*)(?P<etc_1>[-\u2013\'\u2019\\w]*)(?![-\\w\u2013\xad])', u'An\\g<_>\\g<vow_1>\\g<etc_1>', u'Bad article? \\n http://en.wikipedia.org/wiki/English_articles#Distinction_between_a_and_an', u'(m.group("vow_1") <> m.group("vow_1").upper()) and not (m.group("vow_1") in aA or m.group("vow_1").lower() in aA) and spell(LOCALE,m.group("vow_1"))', 0], [u'(?u)((?<=[!?.] )|^)A(?P<_>[ ][\'\u2018"\u201c]?)(?P<con_1>[bcdfghj-np-tv-zBCDFGHJ-NP-TV-Z]\\w*)(?P<etc_1>[-\u2013\'\u2019\\w]*)(?![-\\w\u2013\xad])', u'An\\g<_>\\g<con_1>\\g<etc_1>', u'Did you mean: \\n http://en.wikipedia.org/wiki/English_articles#Distinction_between_a_and_an', u'm.group("con_1") in aAN or m.group("con_1").lower() in aAN', 0], [u'(?u)(?<![-\\w\u2013.,\xad])a(?P<_>[ ][\'\u2018"\u201c]?)(?P<nvow_1>(8[0-9]*|1[18](000)*)(th)?)(?P<etc_1>[-\u2013\'\u2019\\w]*)(?![-\\w\u2013\xad])', u'an\\g<_>\\g<nvow_1>\\g<etc_1>', u'Did you mean: \\n http://en.wikipedia.org/wiki/English_articles#Distinction_between_a_and_an', False, 0], [u'(?u)((?<=[!?.] )|^)A(?P<_>[ ][\'\u2018"\u201c]?)(?P<nvow_1>(8[0-9]*|1[18](000)*)(th)?)(?P<etc_1>[-\u2013\'\u2019\\w]*)(?![-\\w\u2013\xad])', u'An\\g<_>\\g<nvow_1>\\g<etc_1>', u'Did you mean: \\n http://en.wikipedia.org/wiki/English_articles#Distinction_between_a_and_an', False, 0], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<a_1>[Aa])n(?P<_>[ ][\'\u2018"\u201c]?)(?P<ncon_1>[0-79][0-9]*)(?P<etc_1>[-\u2013\'\u2019\\w]*)(?![-\\w\u2013\xad])', u'\\g<a_1>\\g<_>\\g<ncon_1>\\g<etc_1>', u'Did you mean: \\n http://en.wikipedia.org/wiki/English_articles#Distinction_between_a_and_an', u'not m.group("ncon_1")[:2] in ["11", "18"]', 0], [u'(?u)(?<![-\\w\u2013.,\xad])(^)(?P<low_1>[a-z]+)(?![-\\w\u2013\xad])', u'= m.group("low_1").capitalize()', u'Missing capitalization?', u'paralcap.search(TEXT) and not abbrev.search(TEXT)', 0], [u'(?u)((?<=[!?.] )|^)(?P<low_1>[a-z]+)(?![-\\w\u2013\xad])', u'= m.group("low_1").capitalize()', u'Missing capitalization?', u'option(LOCALE,"cap") and not abbrev.search(TEXT)', 0], [u'(?u) ([.?!,:;)\u201d\\]])\\b', u'\\1 ', u'Reversed space and punctuation?', False, 0], [u'(?u) +[.]', u'.', u'Extra space before the period?', u'LOCALE.Country == "US"', 0], [u'(?u) +[.]', u'.', u'Extra space before the full stop?', u'LOCALE.Country != "US"', 0], [u'(?u) +([?!,:;)\u201d\\]])', u'\\1', u'= "Extra space before the " + punct[m.group(1)] + "?"', False, 0], [u'(?u)([([\u201c]) ', u'\\1', u'= "Extra space after the " + punct[m.group(1)] + "?"', False, 0], [u'(?u)\\b(---?| --? )\\b', u' \u2013 \\n\u2014', u'En dash or em dash:', u'not option(LOCALE,"ndash") and not option(LOCALE,"mdash")', 0], [u'(?u)\\b(---?| --? |\u2014)\\b', u' \u2013 ', u'En dash:', u'option(LOCALE,"ndash") and not option(LOCALE,"mdash")', 0], [u'(?u)\\b(---?| --? | \u2013 )\\b', u'\u2014', u'Em dash:', u'option(LOCALE,"mdash")', 0], [u'(?u)(?P<number_1>\\d+([.]\\d+)?)(x| x )(?P<number_2>\\d+([.]\\d+)?)', u'\\g<number_1>\xd7\\g<number_2>', u'Multiplication sign. \\n http://en.wikipedia.org/wiki/Multiplication_sign', u'option(LOCALE,"times")', 0], [u'(?u)(?P<Abc_1>[a-zA-Z]+)(?P<pun_1>[?!,:;%\u2030\u2031\u02da\u201c\u201d\u2018])(?P<Abc_2>[a-zA-Z]+)', u'\\g<Abc_1>\\g<pun_1> \\g<Abc_2>', u'Missing space?', False, 0], [u'(?u)(?P<abc_1>[a-z]+)[.](?P<ABC_1>[A-Z]+)', u'\\g<abc_1>. \\g<ABC_1>', u'Missing space?', False, 0], [u'(?u)[)]', u'', u'Extra closing parenthesis?', u'option(LOCALE,"pair") and not "(" in TEXT', 0], [u'(?u)[(]', u'', u'Extra opening parenthesis?', u'option(LOCALE,"pair") and TEXT[-1] in u"?!;:\u201d\u2019" and not ")" in TEXT', 0], [u'(?u)(?<![0-9])\u201d', u'', u'Extra quotation mark?', u'option(LOCALE,"pair") and not u"\u201c" in TEXT', 0], [u'(?u)(?<=[0-9])\u201d', u'\u2033\\n', u'Bad double prime or extra quotation mark?', u'option(LOCALE,"apostrophe") and not u"\u201c" in TEXT', 0], [u'(?u)\u201c', u'', u'Extra quotation mark?', u'option(LOCALE,"pair") and TEXT[-1] in u"?!;:\u201d\u2019" and not u"\u201d" in TEXT', 0], [u'(?u)[.]{3}', u'\u2026', u'Ellipsis.', u'option(LOCALE,"ellipsis")', 0], [u'(?u)\\b {2,3}(\\b|$)', u'\\1 ', u'Extra space.', u'option(LOCALE,"spaces")', 0], [u'(?u)(^|\\b|(?P<pun_1>[?!,:;%\u2030\u2031\u02da\u201c\u201d\u2018])|[.]) {2,3}(\\b|$)', u'\\1 ', u'Extra space.', u'option(LOCALE,"spaces2")', 0], [u'(?u)(^|\\b|(?P<pun_1>[?!,:;%\u2030\u2031\u02da\u201c\u201d\u2018])|[.]) {4,}(\\b|$)', u'\\1 \\n\t', u'Change multiple spaces to a single space or a tabulator:', u'option(LOCALE,"spaces3")', 0], [u'(?iu)[\\"\u201c\u201d\u201f\u201e]((?P<abc_1>[a-zA-Z]+)[^\\"\u201c\u201d\u201f\u201e]*)[\\"\u201c\u201f]', u'\u201c\\1\u201d', u'Quotation marks.', u'option(LOCALE,"quotation")', 0], [u'(?iu)[\\"\u201d\u201f\u201e]((?P<abc_1>[a-zA-Z]+)[^\\"\u201c\u201d\u201f\u201e]*)[\\"\u201c\u201d\u201f]', u'\u201c\\1\u201d', u'Quotation marks.', u'option(LOCALE,"quotation")', 0], [u"(?iu)'(?P<abc_1>[a-zA-Z]+)'", u'\u2018\\g<abc_1>\u2019', u'Quotation marks.', u'option(LOCALE,"apostrophe")', 0], [u'(?iu)[\\"\u201d\u201f\u201e]((?P<abc_1>[a-zA-Z]+)[^\\"\u201c\u201d\u201f\u201e]*)[\\"\u201c\u201d\u201f]', u'\u201c\\1\u201d', u'Quotation marks.', u'option(LOCALE,"apostrophe")', 0], [u"(?iu)(?P<Abc_1>[a-zA-ZA-Z]+)'(?P<w_1>\\w*)", u'\\g<Abc_1>\u2019\\g<w_1>', u'Replace typewriter apostrophe or quotation mark:', u'option(LOCALE,"apostrophe")', 0], [u"(?u)(?<= )'(?P<Abc_1>[a-zA-Z]+)", u'\u2018\\g<Abc_1>\\n\u2019\\g<Abc_1>', u'Replace typewriter quotation mark or apostrophe:', u'option(LOCALE,"apostrophe")', 0], [u"(?u)^'(?P<Abc_1>[a-zA-Z]+)", u'\u2018\\g<Abc_1>\\n\u2019\\g<Abc_1>', u'Replace typewriter quotation mark or apostrophe:', u'option(LOCALE,"apostrophe")', 0], [u'(?u)\\b(?P<d2_1>\\d\\d)(?P<d_1>\\d\\d\\d)\\b', u'\\g<d2_1>,\\g<d_1>\\n\\g<d2_1>\u202f\\g<d_1>', u'Use thousand separator (common or ISO).', u'option(LOCALE,"numsep")', 0], [u'(?u)\\b(?P<D_1>\\d{1,3})(?P<d_1>\\d\\d\\d)(?P<d_2>\\d\\d\\d)\\b', u'\\g<D_1>,\\g<d_1>,\\g<d_2>\\n\\g<D_1>\u202f\\g<d_1>\u202f\\g<d_2>', u'Use thousand separators (common or ISO).', u'option(LOCALE,"numsep")', 0], [u'(?u)\\b(?P<D_1>\\d{1,3})(?P<d_1>\\d\\d\\d)(?P<d_2>\\d\\d\\d)(?P<d_3>\\d\\d\\d)\\b', u'\\g<D_1>,\\g<d_1>,\\g<d_2>,\\g<d_3>\\n\\g<D_1>\u202f\\g<d_1>\u202f\\g<d_2>\u202f\\g<d_3>', u'Use thousand separators (common or ISO).', u'option(LOCALE,"numsep")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<Abc_1>[a-zA-Z]+) \\1(?![-\\w\u2013\xad])', u'\\g<Abc_1>', u'Word duplication?', u'option(LOCALE,"dup")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])([Tt])his (?P<abc_1>[a-z]+)(?![-\\w\u2013\xad])', u'\\1hese \\g<abc_1>\\n\\1his, \\g<abc_1>', u'Did you mean:', u'option(LOCALE,"grammar") and morph(LOCALE,m.group("abc_1"), "Ns")', 0], [u"(?u)(?<![-\\w\u2013.,\xad])with it['\u2019]s(?![-\\w\u2013\xad])", u'with its\\nwith, it\u2019s', u'Did you mean:', u'option(LOCALE,"grammar")', 0], [u"(?iu)(?<![-\\w\u2013.,\xad])([Ii][Tt]|[Ss]?[Hh][Ee]) [Dd][Oo][Nn]['\u2019][Tt](?![-\\w\u2013\xad])", u'\\1 doesn\u2019t', u'Did you mean:', u'option(LOCALE,"grammar")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:[,.]\\d+)*) (\xb0F|Fahrenheit)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "F", "C", u" \xb0C", ".", ",")', u'Convert to Celsius:', u'option(LOCALE,"metric")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:[,.]\\d+)*) (\xb0C|Celsius)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "C", "F", u" \xb0F", ".", ",")', u'Convert to Fahrenheit:', u'option(LOCALE,"nonmetric")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:[,.]\\d+)*(?: 1/2| ?\xbd)?) (ft|foot|feet)(?! [1-9])(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "ft", "cm", " cm", ".", ",") + "\\n" + measurement(m.group(1), "ft", "m", " m", ".", ",")', u'Convert to metric:', u'option(LOCALE,"metric")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:[,.]\\d+)*(?: 1/2| ?\xbd)?) ft[.]? ([0-9]+(?: 1/2| ?\xbd)?) in(?![-\\w\u2013\xad])', u'= measurement(m.group(1) + "*12+" + m.group(2), "in", "cm", " cm", ".", ",") + "\\n" + measurement(m.group(1) + "*12+" + m.group(2), "in", "m", " m", ".", ",")', u'Convert to metric:', u'option(LOCALE,"metric")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:[,.]\\d+)*(?: 1/2| ?\xbd)?) in(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "in", "mm", " mm", ".", ",") + "\\n" + measurement(m.group(1), "in", "cm", " cm", ".", ",") + "\\n" + measurement(m.group(1), "in", "m", " m", ".", ",")', u'Convert to metric:', u'option(LOCALE,"metric")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:[,.]\\d+)*) mm(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "mm", "in", " in", ".", ",")', u'Convert from metric:', u'option(LOCALE,"nonmetric")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:[,.]\\d+)*) cm(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "cm", "in", " in", ".", ",") + "\\n" + measurement(m.group(1), "cm", "ft", " ft", ".", ",")', u'Convert from metric:', u'option(LOCALE,"nonmetric")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:[,.]\\d+)*) (m|meter|metre)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "m", "in", " in", ".", ",") + "\\n" + measurement(m.group(1), "m", "ft", " ft", ".", ",") + "\\n" + measurement(m.group(1), "m", "mi", " mi", ".", ",")', u'Convert from metric:', u'option(LOCALE,"nonmetric")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:[,.]\\d+)*(?: 1/2| ?\xbd)?) miles?(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "mi", "m", " m", ".", ",") + "\\n" + measurement(m.group(1), "mi", "km", " km", ".", ",")', u'Convert to metric:', u'option(LOCALE,"metric")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:[,.]\\d+)*) km(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "km", "mi", " mi", ".", ",")', u'Convert to miles:', u'option(LOCALE,"nonmetric")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:,\\d+)?) (yd|yards?)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "yd", "m", " m", ".", ",")', u'Convert to metric:', u'option(LOCALE,"metric")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:,\\d+)?) (gal(lons?)?)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "gal", "l", " l", ".", ",") + "\\n" + measurement(m.group(1), "uk_gal", "l", " l (in UK)", ".", ",")', u'Convert to metric:', u'option(LOCALE,"metric")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:,\\d+)?) (pint)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "pt", "dl", " dl", ".", ",") + "\\n" + measurement(m.group(1), "uk_pt", "dl", " dl (in UK)", ".", ",") + "\\n" + measurement(m.group(1), "pt", "l", " l", ".", ",") + "\\n" + measurement(m.group(1), "uk_pt", "l", " l (in UK)", ".", ",")', u'Convert to metric:', u'option(LOCALE,"metric")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:,\\d+)?) (l|L|litres?|liters?)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "l", "gal", " gal", ".", ",") + "\\n" + measurement(m.group(1), "l", "gal", " gal (in UK)", ".", ",")', u'Convert to gallons:', u'option(LOCALE,"nonmetric")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:[,.]\\d+)*) lbs?[.]?(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "lbm", "kg", " kg", ".", ",")', u'Convert to metric:', u'option(LOCALE,"metric")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:[,.]\\d+)*) kg[.]?(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "kg", "lbm", " lb", ".", ",")', u'Convert to pounds:', u'option(LOCALE,"nonmetric")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:[,.]\\d+)*) mph(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "mph", "km/h", " km/h", ".", ",")', u'Convert to km/hour:', u'option(LOCALE,"metric")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:[,.]\\d+)*) km/h(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "km/h", "mph", " mph", ".", ",")', u'Convert to miles/hour:', u'option(LOCALE,"nonmetric")', 0]]
+
diff --git a/dictionaries/en/pythonpath/lightproof_handler_en.py b/dictionaries/en/pythonpath/lightproof_handler_en.py
index e8c458a..f69ccf1 100644
--- a/dictionaries/en/pythonpath/lightproof_handler_en.py
+++ b/dictionaries/en/pythonpath/lightproof_handler_en.py
@@ -1,8 +1,6 @@
import uno
import unohelper
-
-from lightproof_opts_en import lopts
-from lightproof_opts_en import lopts_default
+import lightproof_opts_en
from lightproof_impl_en import pkg
from com.sun.star.lang import XServiceInfo
@@ -14,7 +12,7 @@ options = {}
def load(context):
try:
l = LightproofOptionsEventHandler(context)
- for i in lopts:
+ for i in lightproof_opts_en.lopts:
l.load(i)
except:
pass
@@ -24,9 +22,9 @@ def get_option(page, option):
return options[page + "," + option]
except:
try:
- return options[page[:2] + "," + option]
+ return options[page[:2] + "," + option]
except:
- return 0
+ return 0
def set_option(page, option, value):
options[page + "," + option] = int(value)
@@ -45,7 +43,7 @@ class LightproofOptionsEventHandler( unohelper.Base, XServiceInfo, XContainerWin
# XContainerWindowEventHandler
def callHandlerMethod(self, aWindow, aEventObject, sMethod):
if sMethod == "external_event":
- return self.handleExternalEvent(aWindow, aEventObject)
+ return self.handleExternalEvent(aWindow, aEventObject)
def getSupportedMethodNames(self):
return ("external_event", )
@@ -53,65 +51,65 @@ class LightproofOptionsEventHandler( unohelper.Base, XServiceInfo, XContainerWin
def handleExternalEvent(self, aWindow, aEventObject):
sMethod = aEventObject
if sMethod == "ok":
- self.saveData(aWindow)
+ self.saveData(aWindow)
elif sMethod == "back" or sMethod == "initialize":
- self.loadData(aWindow)
+ self.loadData(aWindow)
return True
def load(self, sWindowName):
child = self.getChild(sWindowName)
- for i in lopts[sWindowName]:
- sValue = child.getPropertyValue(i)
- if sValue == '':
- if i in lopts_default[sWindowName]:
- sValue = 1
- else:
- sValue = 0
- set_option(sWindowName, i, sValue)
+ for i in lightproof_opts_en.lopts[sWindowName]:
+ sValue = child.getPropertyValue(i)
+ if sValue == '':
+ if i in lightproof_opts_en.lopts_default[sWindowName]:
+ sValue = 1
+ else:
+ sValue = 0
+ set_option(sWindowName, i, sValue)
def loadData(self, aWindow):
sWindowName = self.getWindowName(aWindow)
if (sWindowName == None):
- return
+ return
child = self.getChild(sWindowName)
- for i in lopts[sWindowName]:
- sValue = child.getPropertyValue(i)
- if sValue == '':
- if i in lopts_default[sWindowName]:
- sValue = 1
- else:
- sValue = 0
- xControl = aWindow.getControl(i)
- xControl.State = sValue
- set_option(sWindowName, i, sValue)
+ for i in lightproof_opts_en.lopts[sWindowName]:
+ sValue = child.getPropertyValue(i)
+ if sValue == '':
+ if i in lightproof_opts_en.lopts_default[sWindowName]:
+ sValue = 1
+ else:
+ sValue = 0
+ xControl = aWindow.getControl(i)
+ xControl.State = sValue
+ set_option(sWindowName, i, sValue)
def saveData(self, aWindow):
sWindowName = self.getWindowName(aWindow)
if (sWindowName == None):
- return
+ return
child = self.getChild(sWindowName)
- for i in lopts[sWindowName]:
- xControl = aWindow.getControl(i)
- sValue = xControl.State
- child.setPropertyValue(i, str(sValue))
- set_option(sWindowName, i, sValue)
+ for i in lightproof_opts_en.lopts[sWindowName]:
+ xControl = aWindow.getControl(i)
+ sValue = xControl.State
+ child.setPropertyValue(i, str(sValue))
+ set_option(sWindowName, i, sValue)
self.commitChanges()
def getWindowName(self, aWindow):
sName = aWindow.getModel().Name
- if sName in lopts:
- return sName
+ if sName in lightproof_opts_en.lopts:
+ return sName
return None
# XServiceInfo method implementations
def getImplementationName (self):
- return self.ImplementationName
+ return self.ImplementationName
def supportsService(self, ServiceName):
- return (ServiceName in self.services)
+ return (ServiceName in self.services)
def getSupportedServiceNames (self):
- return self.services
+ return self.services
def getChild(self, name):
return self.node.getByName(name)
diff --git a/dictionaries/en/pythonpath/lightproof_impl_en.py b/dictionaries/en/pythonpath/lightproof_impl_en.py
index b09902b..dd1adb0 100644
--- a/dictionaries/en/pythonpath/lightproof_impl_en.py
+++ b/dictionaries/en/pythonpath/lightproof_impl_en.py
@@ -1,6 +1,336 @@
# -*- encoding: UTF-8 -*-
+import uno, re, sys, os, traceback
+from string import join
+from com.sun.star.text.TextMarkupType import PROOFREADING
+from com.sun.star.beans import PropertyValue
+
pkg = "en"
lang = "en"
locales = {'en-GB': ['en', 'GB', ''], 'en-ZW': ['en', 'ZW', ''], 'en-PH': ['en', 'PH', ''], 'en-TT': ['en', 'TT', ''], 'en-BZ': ['en', 'BZ', ''], 'en-NA': ['en', 'NA', ''], 'en-IE': ['en', 'IE', ''], 'en-GH': ['en', 'GH', ''], 'en-US': ['en', 'US', ''], 'en-IN': ['en', 'IN', ''], 'en-BS': ['en', 'BS', ''], 'en-JM': ['en', 'JM', ''], 'en-AU': ['en', 'AU', ''], 'en-NZ': ['en', 'NZ', ''], 'en-ZA': ['en', 'ZA', ''], 'en-CA': ['en', 'CA', '']}
-version = "0.2"
-author = ""
+version = "0.4.3"
+author = "László Németh"
+name = "Lightproof grammar checker (English)"
+
+import lightproof_handler_en
+
+# loaded rules (check for Update mechanism of the editor)
+try:
+ langrule
+except NameError:
+ langrule = {}
+
+# ignored rules
+ignore = {}
+
+# cache for morphogical analyses
+analyses = {}
+stems = {}
+suggestions = {}
+
+# assign Calc functions
+calcfunc = None
+
+# check settings
+def option(lang, opt):
+ return lightproof_handler_en.get_option(lang.Language + "_" + lang.Country, opt)
+
+# filtering affix fields (ds, is, ts etc.)
+def onlymorph(st):
+ if st != None:
+ st = re.sub(r"^.*(st:|po:)", r"\\1", st) # keep last word part
+ st = re.sub(r"\\b(?=[dit][sp]:)","@", st) # and its affixes
+ st = re.sub(r"(?<!@)\\b\w\w:\w+","", st).replace('@','').strip()
+ return st
+
+# if the pattern matches all analyses of the input word,
+# return the last matched substring
+def _morph(rLoc, word, pattern, all, onlyaffix):
+ global analyses
+ if not word:
+ return None
+ if word not in analyses:
+ x = spellchecker.spell(u"<?xml?><query type='analyze'><word>" + word + "</word></query>", rLoc, ())
+ if not x:
+ return None
+ t = x.getAlternatives()
+ if not t:
+ t = [""]
+ analyses[word] = t[0].split("</a>")[:-1]
+ a = analyses[word]
+ result = None
+ p = re.compile(pattern)
+ for i in a:
+ if onlyaffix:
+ i = onlymorph(i)
+ result = p.search(i)
+ if result:
+ result = result.group(0)
+ if not all:
+ return result
+ elif all:
+ return None
+ return result
+
+def morph(rLoc, word, pattern, all=True):
+ return _morph(rLoc, word, pattern, all, False)
+
+def affix(rLoc, word, pattern, all=True):
+ return _morph(rLoc, word, pattern, all, True)
+
+def spell(rLoc, word):
+ if not word:
+ return None
+ return spellchecker.isValid(word, rLoc, ())
+
+# get the tuple of the stem of the word or an empty array
+def stem(rLoc, word):
+ global stems
+ if not word:
+ return []
+ if not word in stems:
+ x = spellchecker.spell(u"<?xml?><query type='stem'><word>" + word + "</word></query>", rLoc, ())
+ if not x:
+ return []
+ t = x.getAlternatives()
+ if not t:
+ t = []
+ stems[word] = list(t)
+ return stems[word]
+
+# get the tuple of the morphological generation of a word or an empty array
+def generate(rLoc, word, example):
+ if not word:
+ return []
+ x = spellchecker.spell(u"<?xml?><query type='generate'><word>" + word + "</word><word>" + example + "</word></query>", rLoc, ())
+ if not x:
+ return []
+ t = x.getAlternatives()
+ if not t:
+ t = []
+ return list(t)
+
+# get suggestions
+def suggest(rLoc, word):
+ global suggestions
+ if not word:
+ return word
+ if word not in suggestions:
+ x = spellchecker.spell("_" + word, rLoc, ())
+ if not x:
+ return word
+ t = x.getAlternatives()
+ suggestions[word] = join(t, "\\n")
+ return suggestions[word]
+
+# get the nth word of the input string or None
+def word(s, n):
+ a = re.match("(?u)( [-.\w%%]+){" + str(n-1) + "}( [-.\w%%]+)", s)
+ if not a:
+ return ''
+ return a.group(2)[1:]
+
+# get the (-)nth word of the input string or None
+def wordmin(s, n):
+ a = re.search("(?u)([-.\w%%]+ )([-.\w%%]+ ){" + str(n-1) + "}$", s)
+ if not a:
+ return ''
+ return a.group(1)[:-1]
+
+def calc(funcname, par):
+ global calcfunc
+ global SMGR
+ if calcfunc == None:
+ calcfunc = SMGR.createInstance( "com.sun.star.sheet.FunctionAccess")
+ if calcfunc == None:
+ return None
+ return calcfunc.callFunction(funcname, par)
+
+def proofread( nDocId, TEXT, LOCALE, nStartOfSentencePos, nSuggestedSentenceEndPos, rProperties ):
+ global ignore
+ aErrs = []
+ s = TEXT[nStartOfSentencePos:nSuggestedSentenceEndPos]
+ for i in get_rule(LOCALE).dic:
+ # 0: regex, 1: replacement, 2: message, 3: condition, 4: ngroup, (5: oldline), 6: case sensitive ?
+ if i[0] and not str(i[0]) in ignore:
+ for m in i[0].finditer(s):
+ try:
+ if not i[3] or eval(i[3]):
+ aErr = uno.createUnoStruct( "com.sun.star.linguistic2.SingleProofreadingError" )
+ aErr.nErrorStart = nStartOfSentencePos + m.start(i[4]) # nStartOfSentencePos
+ aErr.nErrorLength = m.end(i[4]) - m.start(i[4])
+ aErr.nErrorType = PROOFREADING
+ aErr.aRuleIdentifier = str(i[0])
+ iscap = (i[-1] and m.group(i[4])[0:1].isupper())
+ if i[1][0:1] == "=":
+ aErr.aSuggestions = tuple(cap(eval(i[1][1:]).replace('|', "\n").split("\n"), iscap, LOCALE))
+ elif i[1] == "_":
+ aErr.aSuggestions = ()
+ else:
+ aErr.aSuggestions = tuple(cap(m.expand(i[1]).replace('|', "\n").split("\n"), iscap, LOCALE))
+ comment = i[2]
+ if comment[0:1] == "=":
+ comment = eval(comment[1:])
+ else:
+ comment = m.expand(comment)
+ aErr.aShortComment = comment.replace('|', '\n').replace('\\n', '\n').split("\n")[0].strip()
+ aErr.aFullComment = comment.replace('|', '\n').replace('\\n', '\n').split("\n")[-1].strip()
+ if "://" in aErr.aFullComment:
+ p = PropertyValue()
+ p.Name = "FullCommentURL"
+ p.Value = aErr.aFullComment
+ aErr.aFullComment = aErr.aShortComment
+ aErr.aProperties = (p,)
+ else:
+ aErr.aProperties = ()
+ aErrs = aErrs + [aErr]
+ except Exception as e:
+ if len(i) == 7:
+ raise Exception(str(e), i[5])
+ raise
+
+ return tuple(aErrs)
+
+def cap(a, iscap, rLoc):
+ if iscap:
+ for i in range(0, len(a)):
+ if a[i][0:1] == "i":
+ if rLoc.Language == "tr" or rLoc.Language == "az":
+ a[i] = u"\u0130" + a[i][1:]
+ elif a[i][1:2] == "j" and rLoc.Language == "nl":
+ a[i] = "IJ" + a[i][2:]
+ else:
+ a[i] = "I" + a[i][1:]
+ else:
+ a[i] = a[i].capitalize()
+ return a
+
+def compile_rules(dic):
+ # compile regular expressions
+ for i in dic:
+ try:
+ if re.compile("[(][?]iu[)]").match(i[0]):
+ i += [True]
+ i[0] = re.sub("[(][?]iu[)]", "(?u)", i[0])
+ else:
+ i += [False]
+ i[0] = re.compile(i[0])
+ except:
+ if 'PYUNO_LOGLEVEL' in os.environ:
+ print("Lightproof: bad regular expression: ", traceback.format_exc())
+ i[0] = None
+
+def get_rule(loc):
+ try:
+ return langrule[pkg]
+ except:
+ langrule[pkg] = __import__("lightproof_" + pkg)
+ compile_rules(langrule[pkg].dic)
+ return langrule[pkg]
+
+def get_path():
+ return os.path.join(os.path.dirname(sys.modules[__name__].__file__), __name__ + ".py")
+
+# [code]
+
+# pattern matching for common English abbreviations
+abbrev = re.compile("(?i)\\b([a-z]|acct|approx|appt|apr|apt|assoc|asst|aug|ave|avg|co(nt|rp)?|ct|dec|defn|dept|dr|eg|equip|esp|est|etc|excl|ext|feb|fri|ft|govt?|hrs?|ib(id)?|ie|in(c|t)?|jan|jr|jul|lit|ln|mar|max|mi(n|sc)?|mon|Mrs?|mun|natl?|neg?|no(rm|s|v)?|nw|obj|oct|org|orig|pl|pos|prev|proj|psi|qty|rd|rec|rel|reqd?|resp|rev|sat|sci|se(p|pt)?|spec(if)?|sq|sr|st|subj|sun|sw|temp|thurs|tot|tues|univ|var|vs)\\.")
+
+# pattern for paragraph checking
+paralcap = re.compile(u"(?u)^[a-z].*[.?!] [A-Z].*[.?!][)\u201d]?$")
+
+
+punct = { "?": "question mark", "!": "exclamation mark",
+ ",": "comma", ":": "colon", ";": "semicolon",
+ "(": "opening parenthesis", ")": "closing parenthesis",
+ "[": "opening square bracket", "]": "closing square bracket",
+ u"\u201c": "opening quotation mark", u"\u201d": "closing quotation mark"}
+
+
+aA = set(["eucalypti", "eucalyptus", "Eucharist", "Eucharistic",
+"euchre", "euchred", "euchring", "Euclid", "euclidean", "Eudora",
+"eugene", "Eugenia", "eugenic", "eugenically", "eugenicist",
+"eugenicists", "eugenics", "Eugenio", "eukaryote", "Eula", "eulogies",
+"eulogist", "eulogists", "eulogistic", "eulogized", "eulogizer",
+"eulogizers", "eulogizing", "eulogy", "eulogies", "Eunice", "eunuch",
+"eunuchs", "Euphemia", "euphemism", "euphemisms", "euphemist",
+"euphemists", "euphemistic", "euphemistically", "euphonious",
+"euphoniously", "euphonium", "euphony", "euphoria", "euphoric",
+"Euphrates", "euphuism", "Eurasia", "Eurasian", "Eurasians", "eureka",
+"eurekas", "eurhythmic", "eurhythmy", "Euridyce", "Euripides", "euripus",
+"Euro", "Eurocentric", "Euroclydon", "Eurocommunism", "Eurocrat",
+"eurodollar", "Eurodollar", "Eurodollars", "Euromarket", "Europa",
+"Europe", "European", "Europeanisation", "Europeanise", "Europeanised",
+"Europeanization", "Europeanize", "Europeanized", "Europeans", "europium",
+"Eurovision", "Eustace", "Eustachian", "Eustacia", "euthanasia",
+"Ewart", "ewe", "Ewell", "ewer", "ewers", "Ewing", "once", "one",
+"oneness", "ones", "oneself", "onetime", "oneway", "oneyear", "u",
+"U", "UART", "ubiquitous", "ubiquity", "Udale", "Udall", "UEFA",
+"Uganda", "Ugandan", "ugric", "UK", "ukase", "Ukraine", "Ukrainian",
+"Ukrainians", "ukulele", "Ula", "ululated", "ululation", "Ulysses",
+"UN", "unanimity", "unanimous", "unanimously", "unary", "Unesco",
+"UNESCO", "UNHCR", "uni", "unicameral", "unicameralism", "Unicef",
+"UNICEF", "unicellular", "Unicode", "unicorn", "unicorns", "unicycle",
+"unicyclist", "unicyclists", "unidimensional", "unidirectional",
+"unidirectionality", "unifiable", "unification", "unified", "unifier",
+"unifilar", "uniform", "uniformally", "uniformed", "uniformer",
+"uniforming", "uniformisation", "uniformise", "uniformitarian",
+"uniformitarianism", "uniformity", "uniformly", "uniformness", "uniforms",
+"unify", "unifying", "unijugate", "unilateral", "unilateralisation",
+"unilateralise", "unilateralism", "unilateralist", "unilaterally",
+"unilinear", "unilingual", "uniliteral", "uniliteralism", "uniliteralist",
+"unimodal", "union", "unionism", "unionist", "unionists", "unionisation",
+"unionise", "unionised", "unionising", "unionization", "unionize",
+"unionized", "unionizing", "unions", "unipolar", "uniprocessor",
+"unique", "uniquely", "uniqueness", "uniquer", "Uniroyal", "unisex",
+"unison", "Unisys", "unit", "Unitarian", "Unitarianism", "Unitarians",
+"unitary", "unite", "united", "unitedly", "uniter", "unites", "uniting",
+"unitize", "unitizing", "unitless", "units", "unity", "univ", "Univac",
+"univalent", "univalve", "univariate", "universal", "universalisation",
+"universalise", "universalised", "universaliser", "universalisers",
+"universalising", "universalism", "universalist", "universalistic",
+"universality", "universalisation", "universalization", "universalize",
+"universalized", "universalizer", "universalizers", "universalizing",
+"universally", "universalness", "universe", "universes", "universities",
+"university", "univocal", "Unix", "uracil", "Urals", "uranium", "Uranus",
+"uranyl", "urate", "urea", "uremia", "uremic", "ureter", "urethane",
+"urethra", "urethral", "urethritis", "Urey", "Uri", "uric", "urinal",
+"urinalysis", "urinary", "urinated", "urinating", "urination", "urine",
+"urogenital", "urokinase", "urologist", "urologists", "urology",
+"Uruguay", "Uruguayan", "Uruguayans", "US", "USA", "usability",
+"usable", "usably", "usage",
+"usages", "use", "used", "useful", "usefulness", "usefully", "useless",
+"uselessly", "uselessness", "Usenet", "user", "users", "uses", "using",
+"usual", "usually", "usurer", "usurers", "usuress", "usurial", "usurious",
+"usurp", "usurpation", "usurped", "usurper", "usurping", "usurps",
+"usury", "Utah", "utensil", "utensils", "uterine", "uterus", "Utica",
+"utilitarian", "utilitarianism", "utilities", "utility", "utilizable",
+"utilization", "utilize", "utilized", "utilizes", "utilizing", "utopia",
+"utopian", "utopians", "utopias", "Utrecht", "Uttoxeter", "uvula",
+"uvular"])
+
+aAN = set(["f", "F", "FBI", "FDA", "heir", "heirdom", "heired",
+"heirer", "heiress", "heiring", "heirloom", "heirship", "honest",
+"honester", "honestly", "honesty", "honor", "honorable", "honorableness",
+"honorably", "honorarium", "honorary", "honored", "honorer", "honorific",
+"honoring", "honors", "honour", "honourable", "honourableness",
+"honourably", "honourarium", "honourary", "honoured", "honourer",
+"honourific", "honouring", "Honours", "hors", "hour", "hourglass", "hourlong",
+"hourly", "hours", "l", "L", "LCD", "m", "M", "MBA", "MP", "mpg", "mph",
+"MRI", "MSc", "MTV", "n", "N", "NBA", "NBC", "NFL", "NGO", "NHL", "r",
+"R", "s", "S", "SMS", "sos", "SOS", "SPF", "std", "STD", "SUV", "x",
+"X", "XML"])
+
+aB = set(["H", "habitual", "hallucination", "haute", "hauteur", "herb", "herbaceous", "herbal",
+"herbalist", "herbalism", "heroic", "hilarious", "historian", "historic", "historical",
+"homage", "homophone", "horrendous", "hospitable", "horrific", "hotel", "hypothesis", "Xmas"])
+
+def measurement(mnum, min, mout, mstr, decimal, remove):
+ if min == "ft" or min == "in" or min == "mi":
+ mnum = mnum.replace(" 1/2", ".5").replace(u" \xbd", ".5").replace(u"\xbd",".5")
+ m = calc("CONVERT_ADD", (float(eval(mnum.replace(remove, "").replace(decimal, ".").replace(u"\u2212", "-"))), min, mout))
+ a = list(set([str(calc("ROUND", (m, 0)))[:-2], str(calc("ROUND", (m, 1))), str(calc("ROUND", (m, 2))), str(m)])) # remove duplicated rounded items
+ a.sort(lambda x, y: len(x) - len(y)) # sort by string length
+ return join(a, mstr + "\n").replace(".", decimal).replace("-", u"\u2212") + mstr
+
+
+
diff --git a/dictionaries/hu_HU/Lightproof.py b/dictionaries/hu_HU/Lightproof.py
index 9f19420..8bb0e41 100644
--- a/dictionaries/hu_HU/Lightproof.py
+++ b/dictionaries/hu_HU/Lightproof.py
@@ -1,235 +1,26 @@
# -*- encoding: UTF-8 -*-
# Lightproof grammar checker for LibreOffice and OpenOffice.org
-# http://launchpad.net/lightproof
-# version 1.4.4 (2011-12-15)
-#
-# 2009-2011 (c) László Németh (nemeth at numbertext org), license: MPL 1.1 / GPLv3+ / LGPLv3+
+# 2009-2012 (c) László Németh (nemeth at numbertext org), license: MPL 1.1 / GPLv3+ / LGPLv3+
-import uno, unohelper, sys, traceback, re
+import uno, unohelper, os, sys, traceback
from lightproof_impl_hu_HU import locales
from lightproof_impl_hu_HU import pkg
+import lightproof_impl_hu_HU
import lightproof_handler_hu_HU
-from string import join
from com.sun.star.linguistic2 import XProofreader, XSupportedLocales
from com.sun.star.linguistic2 import ProofreadingResult, SingleProofreadingError
from com.sun.star.lang import XServiceInfo, XServiceName, XServiceDisplayName
from com.sun.star.lang import Locale
-from com.sun.star.text.TextMarkupType import PROOFREADING
-from com.sun.star.beans import PropertyValue
-
-# loaded rules
-langrule = {}
-# ignored rules
-ignore = {}
-
-# cache for morphogical analyses
-analyses = {}
-stems = {}
-suggestions = {}
-
-# assign Calc functions
-calcfunc = None
-
-# check settings
-def option(lang, opt):
- return lightproof_handler_hu_HU.get_option(lang.Language + "_" + lang.Country, opt)
-
-# filtering affix fields (ds, is, ts etc.)
-def onlymorph(st):
- if st != None:
- st = re.sub(r"^.*(st:|po:)", r"\1", st) # keep last word part
- st = re.sub(r"\b(?=[dit][sp]:)","@", st) # and its affixes
- st = re.sub(r"(?<!@)\b\w\w:\w+","", st).replace('@','').strip()
- return st
-
-# if the pattern matches all analyses of the input word,
-# return the last matched substring
-def _morph(rLoc, word, pattern, all, onlyaffix):
- global analyses
- if word == None:
- return None
- if word not in analyses:
- x = spellchecker.spell(u"<?xml?><query type='analyze'><word>" + word + "</word></query>", rLoc, ())
- if not x:
- return None
- t = x.getAlternatives()
- if not t:
- t = [""]
- analyses[word] = t[0]
- a = analyses[word].split("</a>")[:-1]
- result = None
- p = re.compile(pattern)
- for i in a:
- if onlyaffix:
- i = onlymorph(i)
- result = p.search(i)
- if result:
- result = result.group(0)
- if not all:
- return result
- elif all:
- return None
- return result
-
-def morph(rLoc, word, pattern, all=True):
- return _morph(rLoc, word, pattern, all, False)
-
-def affix(rLoc, word, pattern, all=True):
- return _morph(rLoc, word, pattern, all, True)
-
-def spell(rLoc, word):
- if word == None:
- return None
- return spellchecker.isValid(word, rLoc, ())
-
-# get the tuple of the stem of the word or an empty array
-def stem(rLoc, word):
- global stems
- if word == None:
- return []
- if not word in stems:
- x = spellchecker.spell(u"<?xml?><query type='stem'><word>" + word + "</word></query>", rLoc, ())
- if not x:
- return []
- t = x.getAlternatives()
- if not t:
- t = []
- stems[word] = list(t)
- return stems[word]
-
-# get the tuple of the morphological generation of a word or an empty array
-def generate(rLoc, word, example):
- if word == None:
- return []
- x = spellchecker.spell(u"<?xml?><query type='generate'><word>" + word + "</word><word>" + example + "</word></query>", rLoc, ())
- if not x:
- return []
- t = x.getAlternatives()
- if not t:
- t = []
- return list(t)
-
-# get suggestions
-def suggest(rLoc, word):
- global suggestions
- if word == None:
- return word
- if word not in suggestions:
- x = spellchecker.spell("_" + word, rLoc, ())
- if not x:
- return word
- t = x.getAlternatives()
- suggestions[word] = join(t, "\n")
- return suggestions[word]
-
-# get the nth word of the input string or None
-def word(s, n):
- a = re.match("(?u)( [-.\w%]+){" + str(n-1) + "}( [-.\w%]+)", s)
- if not a:
- return None
- return a.group(2)[1:]
-
-# get the (-)nth word of the input string or None
-def wordmin(s, n):
- a = re.search("(?u)([-.\w%]+ )([-.\w%]+ ){" + str(n-1) + "}$", s)
- if not a:
- return None
- return a.group(1)[:-1]
-
-def calc(funcname, par):
- global calcfunc
- global SMGR
- if calcfunc == None:
- calcfunc = SMGR.createInstance( "com.sun.star.sheet.FunctionAccess")
- if calcfunc == None:
- return None
- return calcfunc.callFunction(funcname, par)
-
-def proofread( nDocId, TEXT, LOCALE, nStartOfSentencePos, nSuggestedSentenceEndPos, rProperties ):
- global ignore
- aErrs = []
- s = TEXT[nStartOfSentencePos:nSuggestedSentenceEndPos]
- for i in get_rule(LOCALE):
- if i[0] and not str(i[0]) in ignore:
- for m in i[0].finditer(s):
- if not i[3] or eval(i[3]):
- aErr = uno.createUnoStruct( "com.sun.star.linguistic2.SingleProofreadingError" )
- aErr.nErrorStart = nStartOfSentencePos + m.start(0) # nStartOfSentencePos
- aErr.nErrorLength = m.end(0) - m.start(0)
- aErr.nErrorType = PROOFREADING
- aErr.aRuleIdentifier = str(i[0])
- iscap = (i[4] and m.group(0)[0:1].isupper())
- if i[1][0:1] == "=":
- aErr.aSuggestions = tuple(cap(eval(i[1][1:]).split("\n"), iscap, LOCALE))
- else:
- aErr.aSuggestions = tuple(cap(m.expand(i[1]).split("\n"), iscap, LOCALE))
- comment = i[2]
- if comment[0:1] == "=":
- comment = eval(comment[1:])
- aErr.aShortComment = comment.split("\\n")[0].strip()
- aErr.aFullComment = comment.split("\\n")[-1].strip()
- if "://" in aErr.aFullComment:
- p = PropertyValue()
- p.Name = "FullCommentURL"
- p.Value = aErr.aFullComment
- aErr.aFullComment = aErr.aShortComment
- aErr.aProperties = (p,)
- else:
- aErr.aProperties = ()
- aErrs = aErrs + [aErr]
- return tuple(aErrs)
-
-def cap(a, iscap, rLoc):
- if iscap:
- for i in range(0, len(a)):
- if a[i][0:1] == "i":
- if rLoc.Language == "tr" or rLoc.Language == "az":
- a[i] = u"\u0130" + a[i][1:]
- elif a[i][1:2] == "j" and rLoc.Language == "nl":
- a[i] = "IJ" + a[i][2:]
- else:
- a[i] = "I" + a[i][1:]
- else:
- a[i] = a[i].capitalize()
- return a
-
-def get_rule(rLocale):
- module = rLocale.Language
- if rLocale.Country != "":
- module = module + "_" + rLocale.Country
- try:
- return langrule[module]
- except:
- try:
- module = rLocale.Language
- return langrule[module]
- except:
- try:
- d = __import__("lightproof_" + pkg)
- except:
- print "Error: missing language data: " + module
- return None
- # compile regular expressions
- for i in d.dic:
- try:
- if re.compile("[(][?]iu[)]").match(i[0]):
- i += [True]
- i[0] = re.sub("[(][?]iu[)]", "(?u)", i[0])
- else:
- i += [False]
- i[0] = re.compile(i[0])
- except:
- print "Lightproof: bad rule -- ", i[0]
- i[0] = None
- langrule[module] = d.dic
- return langrule[module]
+# reload in obj.reload in Python 3
+try:
+ from obj import reload
+except:
+ pass
class Lightproof( unohelper.Base, XProofreader, XServiceInfo, XServiceName, XServiceDisplayName, XSupportedLocales):
def __init__( self, ctx, *args ):
- global spellchecker
- global SMGR
self.ctx = ctx
self.ServiceName = "com.sun.star.linguistic2.Proofreader"
self.ImplementationName = "org.openoffice.comp.pyuno.Lightproof." + pkg
@@ -240,8 +31,9 @@ class Lightproof( unohelper.Base, XProofreader, XServiceInfo, XServiceName, XSer
self.locales += [Locale(l[0], l[1], l[2])]
self.locales = tuple(self.locales)
currentContext = uno.getComponentContext()
- SMGR = currentContext.ServiceManager
- spellchecker = SMGR.createInstanceWithContext("com.sun.star.linguistic2.SpellChecker", currentContext)
+ lightproof_impl_hu_HU.SMGR = currentContext.ServiceManager
+ lightproof_impl_hu_HU.spellchecker = \
+ lightproof_impl_hu_HU.SMGR.createInstanceWithContext("com.sun.star.linguistic2.SpellChecker", currentContext)
lightproof_handler_hu_HU.load(currentContext)
# XServiceName method implementations
@@ -250,13 +42,13 @@ class Lightproof( unohelper.Base, XProofreader, XServiceInfo, XServiceName, XSer
# XServiceInfo method implementations
def getImplementationName (self):
- return self.ImplementationName
+ return self.ImplementationName
def supportsService(self, ServiceName):
- return (ServiceName in self.SupportedServiceNames)
+ return (ServiceName in self.SupportedServiceNames)
def getSupportedServiceNames (self):
- return self.SupportedServiceNames
+ return self.SupportedServiceNames
# XSupportedLocales
def hasLocale(self, aLocale):
@@ -282,6 +74,48 @@ class Lightproof( unohelper.Base, XProofreader, XServiceInfo, XServiceName, XSer
aRes.aLocale = rLocale
aRes.nStartOfSentencePosition = nStartOfSentencePos
aRes.nStartOfNextSentencePosition = nSuggestedSentenceEndPos
+ aRes.aProperties = ()
+ aRes.xProofreader = self
+ aRes.aErrors = ()
+ if len(rProperties) > 0 and rProperties[0].Name == "Update":
+ try:
+ import lightproof_compile_hu_HU
+ try:
+ code = lightproof_compile_hu_HU.c(rProperties[0].Value, rLocale.Language, True)
+ except Exception as e:
+ aRes.aText, aRes.nStartOfSentencePosition = e
+ return aRes
+ path = lightproof_impl_hu_HU.get_path()
+ f = open(path.replace("_impl", ""), "w")
+ f.write("dic = %s" % code["rules"])
+ f.close()
+ if pkg in lightproof_impl_hu_HU.langrule:
+ mo = lightproof_impl_hu_HU.langrule[pkg]
+ reload(mo)
+ lightproof_impl_hu_HU.compile_rules(mo.dic)
+ lightproof_impl_hu_HU.langrule[pkg] = mo
+ if "code" in code:
+ f = open(path, "r")
+ ft = f.read()
+ f.close()
+ f = open(path, "w")
+ f.write(ft[:ft.find("# [code]") + 8] + "\n" + code["code"])
+ f.close()
+ try:
+ reload(lightproof_impl_hu_HU)
+ except Exception as e:
+ aRes.aText = e.args[0]
+ if e.args[1][3] == "": # "expected an indented block" (end of file)
+ aRes.nStartOfSentencePosition = len(rText.split("\n"))
+ else:
+ aRes.nStartOfSentencePosition = rText.split("\n").index(e.args[1][3][:-1]) + 1
+ return aRes
+ aRes.aText = ""
+ return aRes
+ except:
+ if 'PYUNO_LOGLEVEL' in os.environ:
+ print(traceback.format_exc())
+
l = rText[nSuggestedSentenceEndPos:nSuggestedSentenceEndPos+1]
while l == " ":
aRes.nStartOfNextSentencePosition = aRes.nStartOfNextSentencePosition + 1
@@ -291,44 +125,31 @@ class Lightproof( unohelper.Base, XProofreader, XServiceInfo, XServiceName, XSer
aRes.nBehindEndOfSentencePosition = aRes.nStartOfNextSentencePosition
try:
- aRes.aErrors = proofread( nDocId, rText, rLocale, \
+ aRes.aErrors = lightproof_impl_hu_HU.proofread( nDocId, rText, rLocale, \
nStartOfSentencePos, aRes.nBehindEndOfSentencePosition, rProperties)
- except:
- # traceback.print_exc(file=sys.stdout)
- aRes.aErrors = ()
- aRes.aProperties = ()
- aRes.xProofreader = self
+ except Exception as e:
+ if len(rProperties) > 0 and rProperties[0].Name == "Debug" and len(e.args) == 2:
+ aRes.aText, aRes.nStartOfSentencePosition = e
+ else:
+ if 'PYUNO_LOGLEVEL' in os.environ:
+ print(traceback.format_exc())
return aRes
def ignoreRule(self, rid, aLocale):
- global ignore
- ignore[rid] = 1
+ lightproof_impl_hu_HU.ignore[rid] = 1
def resetIgnoreRules(self):
- global ignore
- ignore = {}
+ lightproof_impl_hu_HU.ignore = {}
# XServiceDisplayName
def getServiceDisplayName(self, aLocale):
- return "Lightproof Grammar Checker (" + pkg + ")"
+ return lightproof_impl_hu_HU.name
g_ImplementationHelper = unohelper.ImplementationHelper()
g_ImplementationHelper.addImplementation( Lightproof, \
- "org.openoffice.comp.pyuno.Lightproof." + pkg,
- ("com.sun.star.linguistic2.Proofreader",),)
+ "org.openoffice.comp.pyuno.Lightproof." + pkg,
+ ("com.sun.star.linguistic2.Proofreader",),)
g_ImplementationHelper.addImplementation( lightproof_handler_hu_HU.LightproofOptionsEventHandler, \
- "org.openoffice.comp.pyuno.LightproofOptionsEventHandler." + pkg,
- ("com.sun.star.awt.XContainerWindowEventHandler",),)
-
-abbrev=re.compile(ur"(?i)\\b([a-z\xf6\xfc\xf3\u0151\xfa\xe9\xe1\u0171\xed\xd6\xdc\xd3\u0150\xda\xc9\xc1\u0170\xcd]|\xc1e|\xc1ht|AkH|al|\xe1lt|\xe1pr|aug|Avtv|bek|Bp|br|bt|Btk|cca|ci(i|ii|v|x)?|cl(i|ii|iii|iv|ix|v|vi|vii|viii|x|xi|xii|xiii|xiv|xix|xv|xvi|xvii|xviii|xx|xxi|xxii|xxiii|xxiv|xxix|xxv|xxvi|xxvii|xxviii|xxx|xxxi|xxxii|xxxiii|xxxiv|xxxix|xxxv|xxxvi|xxxvii|xxxviii)?|Co|cv(i|ii|iii)?|cx(c|ci|cii|ciii|civ|cix|cv|cvi|cvii|cviii|i|ii|iii|iv|ix|l|li|lii|liii|liv|lix|lv|lvi|lvii|lviii|v|vi|vii|viii|x|xi|xii|xiii|xiv|xix|xv|xvi|xvii|xviii|xx|xxi|xxii|xxiii|xxiv|xxix|xxv|xxvi|xxvii|xxviii)?|cs|Csjt|Cstv|cs\xfct|dec|dk|dny|dr|du|dz(s)?|egy|\xe9k|\xc9Ksz|em|\xe9ny|\xc9pt|\xe9rk|etc|Etv|e\xfc|ev|\xe9vf|febr|felv|Flt|ford|f\u0151isk|fsz(la|t)?|Ftv|gimn|g\xf6r|gr|Gt|gy|Gyvt|habil|hg|hiv|Hjt|honv|Hpt|hrsz|hsz|Hszt|htb|id|ifj|ig(h)?|ii(i)?|ill|Inc|ind|isk|iv|ix|izr|jan|jegyz|j\xfal|j\xfan|kat|kb|Kbt|ker|kft|kgy|kht|kir|kiv|Kjt|kk(t)?|koll|korm|k\xf6v|kp|Kr|krt|Kt(v)?|ld|li(i|ii|v|x)?|Ltd|ltp|Ltv|luth|lv(i|ii|iii)?|lx(i|ii|iii|iv|ix|v|vi|vii|viii|x|xi|xii|xiii|xiv|xix|xv|xvi|xvii|xviii|xx|xxi|xxii|xxiii|xxiv|xxix|xxv|xxvi|xxvii|xxviii)?|ly|m\xe1j|m\xe1rc|mat|max|mb|megh|megj|MHSz|min|mk|Mo|Mt|NB|nov|ny(\xe1)?|Nyilv|nyrt|okl|okt|olv|op|orsz|ort|ov(h)?|\xf6ssz|\xd6tv|\xf6zv|Pf|pl(d)?|prof|prot|Ptk|pu|ref|rk(p)?|r\xf3m|r\xf6v|rt|sgt|spec|stb|sz(ept|erk)?|Szjt|szoc|Szt(v)?|sz\xfcl|Tbj|tc|tel|tkp|tszf|tvr|ty|ua|ui|\xfam|\xfan|uo|Ve|Vhr|vi(i|ii)?|v\xf6|vsz|Vt(v)?|xc(i|ii|iii|iv|ix|v|vi|vii|viii)?|xi(i|ii|v|x)?|xl(i|ii|iii|iv|ix|v|vi|vii|viii)?|xv(i|ii|iii)?|xx(i|ii|iii|iv|ix|v|vi|vii|viii|x|xi|xii|xiii|xiv|xix|xv|xvi|xvii|xviii)?|zrt)\\.")
-
-# pattern for paragraph checking
-paralcap = re.compile(u"(?u)^[a-z\xf6\xfc\xf3\u0151\xfa\xe9\xe1\u0171\xed].*[.?!] [A-Z\xd6\xdc\xd3\u0150\xda\xc9\xc1\u0170\xcd].*[.?!][)\u201d]?$")
-
-
-def measurement(mnum, min, mout, mstr):
- m = calc("CONVERT_ADD", (float(mnum.replace(",", ".").replace(u"\u2212", "-")), min, mout))
- a = list(set([str(calc("ROUND", (m, 0)))[:-2], str(calc("ROUND", (m, 1))), str(calc("ROUND", (m, 2))), str(m)])) # remove duplicated rounded items
- a.sort(lambda x, y: len(x) - len(y)) # sort by string length
- return join(a, mstr + "\n").replace(".", ",").replace("-", u"\u2212") + mstr
+ "org.openoffice.comp.pyuno.LightproofOptionsEventHandler." + pkg,
+ ("com.sun.star.awt.XContainerWindowEventHandler",),)
diff --git a/dictionaries/hu_HU/README_lightproof_hu_HU.txt b/dictionaries/hu_HU/README_lightproof_hu_HU.txt
index e10ee4d..6c9f4f8 100644
--- a/dictionaries/hu_HU/README_lightproof_hu_HU.txt
+++ b/dictionaries/hu_HU/README_lightproof_hu_HU.txt
@@ -1,8 +1,3 @@
-Hungarian grammar checker extension for OpenOffice.org
-
-(developed by the Lightproof grammar checker extension generator,
-see http://launchpad.net/lightproof)
-
-Hungarian grammar checker rules
-
-2009-2011 (c) László Németh, license: MPL 1.1 / GPLv3+ / LGPLv3+
+Hungarian sentence checker for LibreOffice
+see git://anongit.freedesktop.org/libreoffice/lightproof
+2009-2012 (c) László Németh, license: MPL 1.1 / GPLv3+ / LGPLv3+
diff --git a/dictionaries/hu_HU/pythonpath/lightproof_handler_hu_HU.py b/dictionaries/hu_HU/pythonpath/lightproof_handler_hu_HU.py
index 1716afb..a313d5f 100644
--- a/dictionaries/hu_HU/pythonpath/lightproof_handler_hu_HU.py
+++ b/dictionaries/hu_HU/pythonpath/lightproof_handler_hu_HU.py
@@ -1,8 +1,6 @@
import uno
import unohelper
-
-from lightproof_opts_hu_HU import lopts
-from lightproof_opts_hu_HU import lopts_default
+import lightproof_opts_hu_HU
from lightproof_impl_hu_HU import pkg
from com.sun.star.lang import XServiceInfo
@@ -14,7 +12,7 @@ options = {}
def load(context):
try:
l = LightproofOptionsEventHandler(context)
- for i in lopts:
+ for i in lightproof_opts_hu_HU.lopts:
l.load(i)
except:
pass
@@ -24,9 +22,9 @@ def get_option(page, option):
return options[page + "," + option]
except:
try:
- return options[page[:2] + "," + option]
+ return options[page[:2] + "," + option]
except:
- return 0
+ return 0
def set_option(page, option, value):
options[page + "," + option] = int(value)
@@ -45,7 +43,7 @@ class LightproofOptionsEventHandler( unohelper.Base, XServiceInfo, XContainerWin
# XContainerWindowEventHandler
def callHandlerMethod(self, aWindow, aEventObject, sMethod):
if sMethod == "external_event":
- return self.handleExternalEvent(aWindow, aEventObject)
+ return self.handleExternalEvent(aWindow, aEventObject)
def getSupportedMethodNames(self):
return ("external_event", )
@@ -53,65 +51,65 @@ class LightproofOptionsEventHandler( unohelper.Base, XServiceInfo, XContainerWin
def handleExternalEvent(self, aWindow, aEventObject):
sMethod = aEventObject
if sMethod == "ok":
- self.saveData(aWindow)
+ self.saveData(aWindow)
elif sMethod == "back" or sMethod == "initialize":
- self.loadData(aWindow)
+ self.loadData(aWindow)
return True
def load(self, sWindowName):
child = self.getChild(sWindowName)
- for i in lopts[sWindowName]:
- sValue = child.getPropertyValue(i)
- if sValue == '':
- if i in lopts_default[sWindowName]:
- sValue = 1
- else:
- sValue = 0
- set_option(sWindowName, i, sValue)
+ for i in lightproof_opts_hu_HU.lopts[sWindowName]:
+ sValue = child.getPropertyValue(i)
+ if sValue == '':
+ if i in lightproof_opts_hu_HU.lopts_default[sWindowName]:
+ sValue = 1
+ else:
+ sValue = 0
+ set_option(sWindowName, i, sValue)
def loadData(self, aWindow):
sWindowName = self.getWindowName(aWindow)
if (sWindowName == None):
- return
+ return
child = self.getChild(sWindowName)
- for i in lopts[sWindowName]:
- sValue = child.getPropertyValue(i)
- if sValue == '':
- if i in lopts_default[sWindowName]:
- sValue = 1
- else:
- sValue = 0
- xControl = aWindow.getControl(i)
- xControl.State = sValue
- set_option(sWindowName, i, sValue)
+ for i in lightproof_opts_hu_HU.lopts[sWindowName]:
+ sValue = child.getPropertyValue(i)
+ if sValue == '':
+ if i in lightproof_opts_hu_HU.lopts_default[sWindowName]:
+ sValue = 1
+ else:
+ sValue = 0
+ xControl = aWindow.getControl(i)
+ xControl.State = sValue
+ set_option(sWindowName, i, sValue)
def saveData(self, aWindow):
sWindowName = self.getWindowName(aWindow)
if (sWindowName == None):
- return
+ return
child = self.getChild(sWindowName)
- for i in lopts[sWindowName]:
- xControl = aWindow.getControl(i)
- sValue = xControl.State
- child.setPropertyValue(i, str(sValue))
- set_option(sWindowName, i, sValue)
+ for i in lightproof_opts_hu_HU.lopts[sWindowName]:
+ xControl = aWindow.getControl(i)
+ sValue = xControl.State
+ child.setPropertyValue(i, str(sValue))
+ set_option(sWindowName, i, sValue)
self.commitChanges()
def getWindowName(self, aWindow):
sName = aWindow.getModel().Name
- if sName in lopts:
- return sName
+ if sName in lightproof_opts_hu_HU.lopts:
+ return sName
return None
# XServiceInfo method implementations
def getImplementationName (self):
- return self.ImplementationName
+ return self.ImplementationName
def supportsService(self, ServiceName):
- return (ServiceName in self.services)
+ return (ServiceName in self.services)
def getSupportedServiceNames (self):
- return self.services
+ return self.services
def getChild(self, name):
return self.node.getByName(name)
diff --git a/dictionaries/hu_HU/pythonpath/lightproof_hu_HU.py b/dictionaries/hu_HU/pythonpath/lightproof_hu_HU.py
index 777b972..f864fb0 100644
--- a/dictionaries/hu_HU/pythonpath/lightproof_hu_HU.py
+++ b/dictionaries/hu_HU/pythonpath/lightproof_hu_HU.py
@@ -1 +1,3 @@
-dic = [[u'(?iu)(?<![-\\w\u2013.,\xad])[Aa] [Aa](?![-\\w\u2013\xad])', u'a', u'Sz\xf3ism\xe9tl\xe9s.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[\xc9\xe9][Ss] [\xc9\xe9][Ss](?![-\\w\u2013\xad])', u'\xe9s', u'Sz\xf3ism\xe9tl\xe9s.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Hh][Oo][Gg][Yy][ -][Hh][Oo][Gg][Yy] [Nn][Ee][Mm](?![-\\w\u2013\xad])', u'hogyhogy nem/hogy, hogy nem', u'Hi\xe1nyz\xf3 vessz\u0151 vagy egybe\xedr\xe1s', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Hh][Oo][Gg][Yy]-[Hh][Oo][Gg][Yy](?![-\\w\u2013\xad])', u'hogyhogy', u'Egybe\xedr\xe1s.', False], [u'(?u)([-\\w]+) hogy\\b(?![-])', u'\\1, hogy', u'Hi\xe1nyz\xf3 vessz\u0151?', u'word(s[m.end():],1) and morph(LOCALE,m.group(1), r"po:(vrb|noun)\\b") and not m.group(1) in [u"felt\xe9ve", "kell"]'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\\w]+) hogy(?![-\\w\u2013\xad])', u'\\1, hogy', u'Hi\xe1nyz\xf3 vessz\u0151?', u'option(LOCALE,"comma") and not re.match(u"(felt\xe9ve|ahelyett|an\xe9lk\xfcl|aszerint|hogy)$", m.group(1))'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\\w]+), (ahelyett|an\xe9lk\xfcl|aszerint), hogy(?![-\\w\u2013\xad])', u'\\1, \\2 hogy\\n\\1 \\2, hogy', u'K\xf6t\u0151sz\xf3szer\u0171 kapcsolat eset\xe9n nem \xedrunk a \u201ehogy\u201d el\xe9 vessz\u0151t. \\n http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Az_\xedr\xe1sjelek#243.', False], [u'(?u)(?<![-\\w\u2013.,\xad])([-\\w]+), illetve, (ha|hogy)(?![-\\w\u2013\xad])', u'\\1, illetve \\2', u'K\xf6t\u0151sz\xf3szer\u0171 kapcsolat eset\xe9n nem \xedrunk az \u201eilletve\u201d ut\xe1n vessz\u0151t. \\n http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Az_\xedr\xe1sjelek#243.', False], [u'(?u)((?<=[!?.] )|^)(?P<low_1>[a-z\xf6\xfc\xf3\u0151\xfa\xe9\xe1\u0171\xed]+)(?![-\\w\u2013\xad])', u'= m.group("low_1").capitalize()', u'Hi\xe1nyz\xf3 nagy kezd\u0151bet\u0171?', u'paralcap.search(TEXT) and not abbrev.search(TEXT)'], [u'(?u)((?<=[!?.] )|^)(?P<low_1>[a-z\xf6\xfc\xf3\u0151\xfa\xe9\xe1\u0171\xed]+)(?![-\\w\u2013\xad])', u'= m.group("low_1").capitalize()', u'Hi\xe1nyz\xf3 nagy kezd\u0151bet\u0171?', u'option(LOCALE,"cap") and not abbrev.search(TEXT)'], [u'(?u)^[-\u2014] ', u'\u2013 ', u'A gondolatjel nagyk\xf6t\u0151jel \\n http://hu.wikipedia.org/wiki/Nagyk\xf6t\u0151jel', u'option(LOCALE,"dash")'], [u'(?u) [-\u2014]([ ,;])', u' \u2013\\1', u'A gondolatjel nagyk\xf6t\u0151jel \\n http://hu.wikipedia.org/wiki/Nagyk\xf6t\u0151jel', u'option(LOCALE,"dash")'], [u'(?u)^[-\u2013](\\w+)', u'\u2013 \\1', u'Gondolatjel sz\xf3k\xf6zzel a felsorol\xe1sn\xe1l \\n http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Az_\xedr\xe1sjelek#258.', u'option(LOCALE,"dash")'], [u'(?u)[[][.][.][.]]', u'[\u2026]', u'H\xe1rom pont \\n http://hu.wikipedia.org/wiki/H\xe1rom_pont', u'option(LOCALE,"elli")'], [u'(?u)[.][.][.]', u'\u2026', u'H\xe1rom pont \\n http://hu.wikipedia.org/wiki/H\xe1rom_pont', u'option(LOCALE,"elli")'], [u'(?u) +([.?!,:;)\u201d])\\b', u'\\1 ', u'Felcser\xe9lt sz\xf3k\xf6z \xe9s \xedr\xe1sjel?', False], [u'(?u) +([.?!,:;)\u201d])', u'\\1', u'Sz\xf3k\xf6z n\xe9lk\xfcl tapad\xf3 \xedr\xe1sjel \\n http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Az_\xedr\xe1sjelek#239.', False], [u'(?u)[:,;]([.?!,;:])(?P<E_1>( |$))', u'\\1\\g<E_1>', u'Felesleges \xedr\xe1sjel.', False], [u'(?u)\\b[.][.](?P<E_1>( |$))', u'.\\g<E_1>\\n\u2026\\g<E_1>', u'Pont vagy h\xe1rom pont? \\n http://hu.wikipedia.org/wiki/H\xe1rom_pont', False], [u'(?u)(\\w)(?P<punct_1>[?!,:;%\u2030\u2031\xb0\u201e\u201d])(?P<Abc_1>(?P<abc_1>[a-z\xf6\xfc\xf3\u0171\u0151\xfa\xe9\xe1\xed])|(?P<ABC_1>[A-Z\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd]))', u'\\1\\g<punct_1> \\g<Abc_1>', u'Hi\xe1nyz\xf3 sz\xf3k\xf6z?', False], [u'(?u)(?P<abc_1>[a-z\xf6\xfc\xf3\u0171\u0151\xfa\xe9\xe1\xed])[.](?P<ABC_1>[A-Z\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd])', u'\\g<abc_1>. \\g<ABC_1>', u'Hi\xe1nyz\xf3 sz\xf3k\xf6z?', False], [u'(?u)(^|\\b|(?P<punct_1>[?!,:;%\u2030\u2031\xb0\u201e\u201d])|[.]) {2,3}(\\b|$)', u'\\1 ', u'Felesleges sz\xf3k\xf6z.', u'option(LOCALE,"spaces")'], [u'(?u)(^|\\b|(?P<punct_1>[?!,:;%\u2030\u2031\xb0\u201e\u201d])|[.]) {4,}(\\b|$)', u'\\1 \\n\\1\t', u'Sz\xf3k\xf6z\xf6k cser\xe9je egy sz\xf3k\xf6zre vagy tabul\xe1torra:', u'option(LOCALE,"spaces2")'], [u'(?iu)(\\d+)([Xx]| [Xx] )(\\d+(-\\w+)?)', u'\\1\xd7\\3\\n\\1\u202f\xb7\u202f\\3', u'Szorz\xe1sjel. \\n http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Az_\xedr\xe1sjelek#275.', False], [u"(?iu)(?P<a_1>(?P<abc_1>[a-zA-Z\xd6\xf6\xdc\xfc\xd3\xf3\u0170\u0171\u0150\u0151\xda\xfa\xc9\xe9\xc1\xe1\xcd\xed])+)['\xb4](?P<b_1>(?P<abc_2>[a-zA-Z\xd6\xf6\xdc\xfc\xd3\xf3\u0170\u0171\u0150\u0151\xda\xfa\xc9\xe9\xc1\xe1\xcd\xed])*)", u'\\g<a_1>\u2019\\g<b_1>', u'Val\xf3di aposztr\xf3f. \\n http://hu.wikipedia.org/wiki/Aposztr\xf3f', u'option(LOCALE,"apost")'], [u"(?u)['\xb4](\\d\\d(-\\w+)?)", u'\u2019\\1', u'Val\xf3di aposztr\xf3f. \\n http://hu.wikipedia.org/wiki/Aposztr\xf3f', u'option(LOCALE,"apost")'], [u'(?u)[)]', u'', u'Felesleges z\xe1r\xf3jel?', u'option(LOCALE,"par") and not "(" in TEXT'], [u'(?iu)[\\"\u201c\u201d\u201f\u201e]((?P<abc_1>[a-zA-Z\xd6\xf6\xdc\xfc\xd3\xf3\u0170\u0171\u0150\u0151\xda\xfa\xc9\xe9\xc1\xe1\xcd\xed])[^\\"\u201c\u201d\u201f\u201e]*)[\\"\u201c\u201f]', u'\u201e\\1\u201d', u'Id\xe9z\u0151jelek. \\n http://hu.wikipedia.org/wiki/Id\xe9z\u0151jel', u'option(LOCALE,"quot")'], [u'(?iu)[\\"\u201c\u201d\u201f]((?P<abc_1>[a-zA-Z\xd6\xf6\xdc\xfc\xd3\xf3\u0170\u0171\u0150\u0151\xda\xfa\xc9\xe9\xc1\xe1\xcd\xed])[^\\"\u201c\u201d\u201f\u201e]*)[\\"\u201c\u201d\u201f]', u'\u201e\\1\u201d', u'Id\xe9z\u0151jelek. \\n http://hu.wikipedia.org/wiki/Id\xe9z\u0151jel', u'option(LOCALE,"quot")'], [u'(?iu),,((?P<abc_1>[a-zA-Z\xd6\xf6\xdc\xfc\xd3\xf3\u0170\u0171\u0150\u0151\xda\xfa\xc9\xe9\xc1\xe1\xcd\xed])[^\\"\u201c\u201d\u201f\u201e_1><\']*)\'\'', u'\u201e\\1\u201d', u'Id\xe9z\u0151jelek. \\n http://hu.wikipedia.org/wiki/Id\xe9z\u0151jel', False], [u'(?iu)>>((?P<abc_1>[a-zA-Z\xd6\xf6\xdc\xfc\xd3\xf3\u0170\u0171\u0150\u0151\xda\xfa\xc9\xe9\xc1\xe1\xcd\xed])[^\\"\u201c\u201d\u201f\u201e_1><\']*)<<', u'\xbb\\1\xab', u'Id\xe9z\u0151jelek. \\n http://hu.wikipedia.org/wiki/Id\xe9z\u0151jel', False], [u'(?iu)\u2018+((?P<abc_1>[a-zA-Z\xd6\xf6\xdc\xfc\xd3\xf3\u0170\u0171\u0150\u0151\xda\xfa\xc9\xe9\xc1\xe1\xcd\xed])[^\\"\u201c\u201d\u201f\u201e\u2019]*)\u2019+', u'\u201e\\1\u201d\\n\xbb\\1\xab', u'Id\xe9z\u0151jelek. \\n http://hu.wikipedia.org/wiki/Id\xe9z\u0151jel', False], [u'(?iu)(?<![-\\w\u2013.,\xad])([(\u201e\xbb]) +(?![-\\w\u2013\xad])', u'\\1', u'Sz\xf3k\xf6z n\xe9lk\xfcl tapad\xf3 \xedr\xe1sjel. \\n http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Az_\xedr\xe1sjelek#239.', False], [u'(?iu)(?<![-\\w\u2013.,\xad]) +([\xab])(?![-\\w\u2013\xad])', u'\\1', u'Sz\xf3k\xf6z n\xe9lk\xfcl tapad\xf3 \xedr\xe1sjel. \\n http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Az_\xedr\xe1sjelek#239.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])(?iu)\xab((?P<abc_1>[a-zA-Z\xd6\xf6\xdc\xfc\xd3\xf3\u0170\u0171\u0150\u0151\xda\xfa\xc9\xe9\xc1\xe1\xcd\xed])[^\\"\u201c\u201d\u201f\u201e\u2019]*)\xbb(?![-\\w\u2013\xad])', u'\xbb\\1\xab', u'Felcser\xe9lt bels\u0151 id\xe9z\u0151jelek. \\n http://hu.wikipedia.org/wiki/Id\xe9z\u0151jel', False], [u'(?iu)(?<![-\\w\u2013.,\xad])(\\d[\\d \xa0\u202f.]*)(,?(?:[-\u2013]|00?)? F[Tt](?:-\\w+)?(?: \\(|, )(?:azaz|vagyis) )([-\\w]+)( [Ff][Oo][Rr][Ii][Nn][Tt]\\w*\\)?)(?![-\\w\u2013\xad])', u'= m.group(1) + m.group(2) + calc("NUMBERTEXT", (re.sub(u"[ \xa0\u202f.]", "", m.group(1)), "hu")) + m.group(4)', u'A k\xe9t \xf6sszeg nem egyezik.', u'option(LOCALE,"money") and calc("NUMBERTEXT", ("1", "hu")) and calc("NUMBERTEXT", (re.sub(u"[ \xa0\u202f.]", "", m.group(1)), "hu")).replace(u"kett\u0151", u"k\xe9t").replace(u"ezeregysz\xe1z", u"ezersz\xe1z") != re.sub(ur"\\begy(sz\xe1z|ezer)", r"\\g<1>", m.group(3)).replace(u"ezeregysz\xe1z", u"ezersz\xe1z").replace(u"kett\u0151", u"k\xe9t")'], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<d2_1>\u2212?\\d{2,3})(?P<dn_1>\\d{3}(,\\w{1,4})?[%\u2030\u2031\xb0]?(-\\w+)?)(?![-\\w\u2013\xad])', u'\\g<d2_1>\xa0\\g<dn_1>', u'Nagy sz\xe1mok tagol\xe1sa. (AkH. 274.)', u'option(LOCALE,"numpart") and not option(LOCALE,"thou")'], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<d1_1>\u2212?\\d{1,3})(?P<d3_1>\\d{3})(?P<dn_1>\\d{3}(,\\w{1,4})?[%\u2030\u2031\xb0]?(-\\w+)?)(?![-\\w\u2013\xad])', u'\\g<d1_1>\xa0\\g<d3_1>\xa0\\g<dn_1>', u'Nagy sz\xe1mok tagol\xe1sa. (AkH. 274.)', u'option(LOCALE,"numpart") and not option(LOCALE,"thou")'], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<d1_1>\u2212?\\d{1,3})(?P<d3_1>\\d{3})(?P<d3_2>\\d{3})(?P<dn_1>\\d{3}(,\\w{1,4})?[%\u2030\u2031\xb0]?(-\\w+)?)(?![-\\w\u2013\xad])', u'\\g<d1_1>\xa0\\g<d3_1>\xa0\\g<d3_2>\xa0\\g<dn_1>', u'Nagy sz\xe1mok tagol\xe1sa. (AkH. 274.)', u'option(LOCALE,"numpart") and not option(LOCALE,"thou")'], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<d2_1>\u2212?\\d{2,3})\xa0?(?P<dn_1>\\d{3}(,\\w{1,4})?[%\u2030\u2031\xb0]?(-\\w+)?)(?![-\\w\u2013\xad])', u'\\g<d2_1>\u202f\\g<dn_1>', u'Nagy sz\xe1mok tagol\xe1sa nem t\xf6r\u0151 keskeny sz\xf3k\xf6z\xf6kkel. (AkH. 274.)', u'option(LOCALE,"numpart") and option(LOCALE,"thou")'], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<d1_1>\u2212?\\d{1,3})\xa0?(?P<d3_1>\\d{3})\xa0?(?P<dn_1>\\d{3}(,\\w{1,4})?[%\u2030\u2031\xb0]?(-\\w+)?)(?![-\\w\u2013\xad])', u'\\g<d1_1>\u202f\\g<d3_1>\u202f\\g<dn_1>', u'Nagy sz\xe1mok tagol\xe1sa nem t\xf6r\u0151 keskeny sz\xf3k\xf6z\xf6kkel. (AkH. 274.)', u'option(LOCALE,"numpart") and option(LOCALE,"thou")'], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<d1_1>\u2212?\\d{1,3})\xa0?(?P<d3_1>\\d{3})\xa0?(?P<d3_2>\\d{3})\xa0?(?P<dn_1>\\d{3}(,\\w{1,4})?[%\u2030\u2031\xb0]?(-\\w+)?)(?![-\\w\u2013\xad])', u'\\g<d1_1>\u202f\\g<d3_1>\u202f\\g<d3_2>\xa0\\g<dn_1>', u'Nagy sz\xe1mok tagol\xe1sa nem t\xf6r\u0151 keskeny sz\xf3k\xf6z\xf6kkel. (AkH. 274.)', u'option(LOCALE,"numpart") and option(LOCALE,"thou")'], [u'(?iu)(?<![-\\w\u2013.,\xad])-(?P<d2_1>\\d{2,3})(?P<dn_1>\\d{3}(,\\w+)?[%\u2030\u2031\xb0]?(-\\w+)?)(?![-\\w\u2013\xad])', u'\u2212\\g<d2_1>\xa0\\g<dn_1>', u'Nagy sz\xe1mok tagol\xe1sa. (AkH. 274.)', u'option(LOCALE,"numpart") and not option(LOCALE,"thou")'], [u'(?iu)(?<![-\\w\u2013.,\xad])-(?P<d1_1>\\d{1,3})(?P<d3_1>\\d{3})(?P<dn_1>\\d{3}(,\\w+)?[%\u2030\u2031\xb0]?(-\\w+)?)(?![-\\w\u2013\xad])', u'\u2212\\g<d1_1>\xa0\\g<d3_1>\xa0\\g<dn_1>', u'Nagy sz\xe1mok tagol\xe1sa. (AkH. 274.)', u'option(LOCALE,"numpart") and not option(LOCALE,"thou")'], [u'(?iu)(?<![-\\w\u2013.,\xad])-(?P<d1_1>\\d{1,3})(?P<d3_1>\\d{3})(?P<d3_2>\\d{3})(?P<dn_1>\\d{3}(,\\w+)?[%\u2030\u2031\xb0]?(-\\w+)?)(?![-\\w\u2013\xad])', u'\u2212\\g<d1_1>\xa0\\g<d3_1>\xa0\\g<d3_2>\xa0\\g<dn_1>', u'Nagy sz\xe1mok tagol\xe1sa. (AkH. 274.)', u'option(LOCALE,"numpart") and not option(LOCALE,"thou")'], [u'(?iu)(?<![-\\w\u2013.,\xad])-(?P<d2_1>\\d{2,3})\xa0?(?P<dn_1>\\d{3}(,\\w+)?[%\u2030\u2031\xb0]?(-\\w+)?)(?![-\\w\u2013\xad])', u'\u2212\\g<d2_1>\u202f\\g<dn_1>', u'Nagy sz\xe1mok tagol\xe1sa nem t\xf6r\u0151 keskeny sz\xf3k\xf6z\xf6kkel. (AkH. 274.)', u'option(LOCALE,"numpart") and option(LOCALE,"thou")'], [u'(?iu)(?<![-\\w\u2013.,\xad])-(?P<d1_1>\\d{1,3})\xa0?(?P<d3_1>\\d{3})\xa0?(?P<dn_1>\\d{3}(,\\w+)?[%\u2030\u2031\xb0]?(-\\w+)?)(?![-\\w\u2013\xad])', u'\u2212\\g<d1_1>\u202f\\g<d3_1>\u202f\\g<dn_1>', u'Nagy sz\xe1mok tagol\xe1sa nem t\xf6r\u0151 keskeny sz\xf3k\xf6z\xf6kkel. (AkH. 274.)', u'option(LOCALE,"numpart") and option(LOCALE,"thou")'], [u'(?iu)(?<![-\\w\u2013.,\xad])-(?P<d1_1>\\d{1,3})\xa0?(?P<d3_1>\\d{3})\xa0?(?P<d3_2>\\d{3})\xa0?(?P<dn_1>\\d{3}(,\\w+)?[%\u2030\u2031\xb0]?(-\\w+)?)(?![-\\w\u2013\xad])', u'\u2212\\g<d1_1>\u202f\\g<d3_1>\u202f\\g<d3_2>\u202f\\g<dn_1>', u'Nagy sz\xe1mok tagol\xe1sa nem t\xf6r\u0151 keskeny sz\xf3k\xf6z\xf6kkel. (AkH. 274.)', u'option(LOCALE,"numpart") and option(LOCALE,"thou")'], [u'(?iu)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d[\\d,]*)[ \xa0]([%\u2030\u2031\xb0](-\\w*)?)(?![-\\w\u2013\xad])', u'\\1\\2', u'Sz\xf3k\xf6z n\xe9lk\xfcl tapad\xf3 \xedr\xe1sjel. \\n http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Az_\xedr\xe1sjelek#275.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d\\d*)[.](\\d\\d*)([%\u2030\u2031\xb0](-\\w*)?)(?![-\\w\u2013\xad])', u'\\1,\\2\\3', u'Tizedesvessz\u0151 a helyes \xedr\xe1sjel. \\n http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Egy\xe9b_tudnival\xf3k#291.', u'option(LOCALE,"comma")'], [u'(?iu)(?<![-\\w\u2013.,\xad])(\\d\\d*)[.](\\d)(?![-\\w\u2013\xad])', u'\\1,\\2\\n\\1.\\2.', u'Tizedest\xf6rt (AkH. 291.) vagy sorsz\xe1m?', u'option(LOCALE,"comma") and (not wordmin(s[:m.start()],1) or not re.match("[A-Z]", wordmin(s[:m.start()],1)))'], [u'(?iu)(?<![-\\w\u2013.,\xad])((\\d\\d*[.]){2}\\d)(?![-\\w\u2013\xad])', u'\\1.', u'A sorsz\xe1mot pont k\xf6veti.', u'option(LOCALE,"comma") and not wordmin(s[:m.start()],1) or not re.match("[A-Z]", wordmin(s[:m.start()],1))'], [u'(?iu)(?<![-\\w\u2013.,\xad])(\\d\\d\\d+)[.](\\d\\d)(?![-\\w\u2013\xad])', u'\\1,\\2\\n\\1.\\2.', u'Tizedest\xf6rt (AkH. 291.) vagy sorsz\xe1m?', u'option(LOCALE,"comma")'], [u'(?iu)(?<![-\\w\u2013.,\xad])-(\\d+([ \xa0]\\d\\d\\d){0,3}(,\\d+)?[%\u2030\u2031\xb0]?(-\\w+)?)(?![-\\w\u2013\xad])', u'\u2212\\1', u'M\xednuszjel kisk\xf6t\u0151jel helyett.', u'option(LOCALE,"minus")'], [u'(?iu)(?<![-\\w\u2013.,\xad])-(\\d+([ \xa0]\\d\\d\\d){0,3})[.](\\d+[%\u2030\u2031\xb0]?(-\\w+)?)(?![-\\w\u2013\xad])', u'\u2212\\1,\\2', u'M\xednuszjel \xe9s tizedesvessz\u0151. \\n http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Egy\xe9b_tudnival\xf3k#291.', u'option(LOCALE,"minus")'], [u'(?iu)(?<![-\\w\u2013.,\xad])(\u2212\\d+([ \xa0]\\d\\d\\d){0,3})[.](\\d+[%\u2030\u2031\xb0]?(-\\w+)?)(?![-\\w\u2013\xad])', u'\\1,\\2', u'Tizedesvessz\u0151 pont helyett. \\n http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Egy\xe9b_tudnival\xf3k#291.', False], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:,\\d+)?)[ \xa0](\xb0(-\\w+))(?![-\\w\u2013\xad])', u'\\1\\2', u'Sz\xf3k\xf6z n\xe9lk\xfcl tapad\xf3 \xedr\xe1sjel (AkH. 239.)', False], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:,\\d+)?)((\xb0C|\xb0F|\u2103|\u2109)(-\\w+)?)(?![-\\w\u2013\xad])', u'\\1\xa0\\2', u'Nem t\xf6r\u0151 sz\xf3k\xf6zzel elv\xe1lasztott m\xe9rt\xe9kegys\xe9g.', False], [u'(?u)(?<![-\\w\u2013.,\xad])\\b(?P<year_1>[12]\\d\\d\\d)[.] (?P<Month_1>Janu\xe1r|Febru\xe1r|M\xe1rcius|\xc1prilis|M\xe1jus|J\xfanius|J\xfalius|Augusztus|Szeptember|Okt\xf3ber|November|December)\\b(?![-\\w\u2013\xad])', u'= m.group("year_1") + ". " + m.group("Month_1").lower()', u'A h\xf3nap nev\xe9t kisbet\u0171vel \xedrjuk. (AkH. 144.)', False], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<year_1>[12]\\d\\d\\d) (?P<month_1>janu\xe1r|febru\xe1r|m\xe1rcius|\xe1prilis|m\xe1jus|j\xfanius|j\xfalius|augusztus|szeptember|okt\xf3ber|november|december|jan[.]|febr[.]|m\xe1rc[.]|\xe1pr[.]|m\xe1j[.]|j\xfan[.]|j\xfal[.]|aug[.]|szept[.]|okt[.]|nov[.]|dec[.])(?P<notmonthposs_1>(|[^-\u2013ja\xe1e\xe9][a-z\xf6\xfc\xf3\u0171\u0151\xfa\xe9\xe1\xed]*))(?![-\\w\u2013\xad])', u'\\g<year_1>. \\g<month_1>\\g<notmonthposs_1>', u'Az \xe9vsz\xe1m ut\xe1n itt pontot \xedrunk. \\n \\n http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Egy\xe9b_tudnival\xf3k#294.', False], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<year_1>[12]\\d\\d\\d) (?P<month_1>janu\xe1r|febru\xe1r|m\xe1rcius|\xe1prilis|m\xe1jus|j\xfanius|j\xfalius|augusztus|szeptember|okt\xf3ber|november|december|jan[.]|febr[.]|m\xe1rc[.]|\xe1pr[.]|m\xe1j[.]|j\xfan[.]|j\xfal[.]|aug[.]|szept[.]|okt[.]|nov[.]|dec[.])(?P<notmonthcomp_1>[-\u2013](?P<month_2>janu\xe1r|febru\xe1r|m\xe1rcius|\xe1prilis|m\xe1jus|j\xfanius|j\xfalius|augusztus|szeptember|okt\xf3ber|november|december|jan[.]|febr[.]|m\xe1rc[.]|\xe1pr[.]|m\xe1j[.]|j\xfan[.]|j\xfal[.]|aug[.]|szept[.]|okt[.]|nov[.]|dec[.])(?P<notmonthposs_1>(|[^-\u2013ja\xe1e\xe9][a-z\xf6\xfc\xf3\u0171\u0151\xfa\xe9\xe1\xed]*)))(?![-\\w\u2013\xad])', u'\\g<year_1>. \\g<month_1>\\g<notmonthcomp_1>', u'Az \xe9vsz\xe1m ut\xe1n itt pontot \xedrunk. \\n http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Egy\xe9b_tudnival\xf3k#294.', False], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<year_1>[12]\\d\\d\\d) \xe9vi(?![-\\w\u2013\xad])', u'\\g<year_1>. \xe9vi', u'Az \xe9vsz\xe1m ut\xe1n itt pontot \xedrunk. \\n http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Egy\xe9b_tudnival\xf3k#294.', False], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<year_1>[12]\\d\\d\\d)[-\u2013](?P<year2_1>\\d\\d) \xe9vi(?![-\\w\u2013\xad])', u'\\g<year_1>\u2013\\g<year2_1>. \xe9vi', u'Az \xe9vsz\xe1m ut\xe1n itt pontot \xedrunk. \\n http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Egy\xe9b_tudnival\xf3k#294.', False], [u'(?u)(?<![-\\w\u2013.,\xad])\\b(?P<year_1>[12]\\d\\d\\d)[.] (?P<nu_1>folyam\xe1n|el\u0151tti?|ut\xe1ni?|k\xf6z\xf6tti?|nyara|nyar\xe1\\w+|tele|tel\xe9\\w+|tavasza|tavasz\xe1\\w+|\u0151sze|\u0151sz\xe9\\w+)\\b(?![-\\w\u2013\xad])', u'\\g<year_1> \\g<nu_1>', u'Az \xe9vsz\xe1m ut\xe1n itt nem \xedrunk pontot. \\n http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Egy\xe9b_tudnival\xf3k#295.', False], [u'(?u)(?<![-\\w\u2013.,\xad])\\b(?P<year_1>[12]\\d\\d\\d)[.] (?P<month_1>janu\xe1r|febru\xe1r|m\xe1rcius|\xe1prilis|m\xe1jus|j\xfanius|j\xfalius|augusztus|szeptember|okt\xf3ber|november|december|jan[.]|febr[.]|m\xe1rc[.]|\xe1pr[.]|m\xe1j[.]|j\xfan[.]|j\xfal[.]|aug[.]|szept[.]|okt[.]|nov[.]|dec[.])(?P<monthposs_1>([ja\xe1e]|\xe9\\w)\\w*)\\b(?![-\\w\u2013\xad])', u'\\g<year_1> \\g<month_1>\\g<monthposs_1>', u'Az \xe9vsz\xe1m ut\xe1n itt nem \xedrunk pontot. \\n http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Egy\xe9b_tudnival\xf3k#295.', False], [u'(?iu)\\b(?P<month_1>[Jj][Aa][Nn][Uu][\xc1\xe1][Rr]|[Ff][Ee][Bb][Rr][Uu][\xc1\xe1][Rr]|[Mm][\xc1\xe1][Rr][Cc][Ii][Uu][Ss]|[\xc1\xe1][Pp][Rr][Ii][Ll][Ii][Ss]|[Mm][\xc1\xe1][Jj][Uu][Ss]|[Jj][\xda\xfa][Nn][Ii][Uu][Ss]|[Jj][\xda\xfa][Ll][Ii][Uu][Ss]|[Aa][Uu][Gg][Uu][Ss][Zz][Tt][Uu][Ss]|[Ss][Zz][Ee][Pp][Tt][Ee][Mm][Bb][Ee][Rr]|[Oo][Kk][Tt][\xd3\xf3][Bb][Ee][Rr]|[Nn][Oo][Vv][Ee][Mm][Bb][Ee][Rr]|[Dd][Ee][Cc][Ee][Mm][Bb][Ee][Rr]|[Jj][Aa][Nn][.]|[Ff][Ee][Bb][Rr][.]|[Mm][\xc1\xe1][Rr][Cc][.]|[\xc1\xe1][Pp][Rr][.]|[Mm][\xc1\xe1][Jj][.]|[Jj][\xda\xfa][Nn][.]|[Jj][\xda\xfa][Ll][.]|[Aa][Uu][Gg][.]|[Ss][Zz][Ee][Pp][Tt][.]|[Oo][Kk][Tt][.]|[Nn][Oo][Vv][.]|[Dd][Ee][Cc][.]) (?P<day_1>[12]\\d|3[01]|0?[1-9])[.]-(?P<w_1>\\w*)', u'\\g<month_1> \\g<day_1>-\\g<w_1>', u'A nap ut\xe1n itt nem \xedrunk pontot. \\n http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Egy\xe9b_tudnival\xf3k#296.', False], [u'(?iu)\\b(?P<month_1>[Jj][Aa][Nn][Uu][\xc1\xe1][Rr]|[Ff][Ee][Bb][Rr][Uu][\xc1\xe1][Rr]|[Mm][\xc1\xe1][Rr][Cc][Ii][Uu][Ss]|[\xc1\xe1][Pp][Rr][Ii][Ll][Ii][Ss]|[Mm][\xc1\xe1][Jj][Uu][Ss]|[Jj][\xda\xfa][Nn][Ii][Uu][Ss]|[Jj][\xda\xfa][Ll][Ii][Uu][Ss]|[Aa][Uu][Gg][Uu][Ss][Zz][Tt][Uu][Ss]|[Ss][Zz][Ee][Pp][Tt][Ee][Mm][Bb][Ee][Rr]|[Oo][Kk][Tt][\xd3\xf3][Bb][Ee][Rr]|[Nn][Oo][Vv][Ee][Mm][Bb][Ee][Rr]|[Dd][Ee][Cc][Ee][Mm][Bb][Ee][Rr]|[Jj][Aa][Nn][.]|[Ff][Ee][Bb][Rr][.]|[Mm][\xc1\xe1][Rr][Cc][.]|[\xc1\xe1][Pp][Rr][.]|[Mm][\xc1\xe1][Jj][.]|[Jj][\xda\xfa][Nn][.]|[Jj][\xda\xfa][Ll][.]|[Aa][Uu][Gg][.]|[Ss][Zz][Ee][Pp][Tt][.]|[Oo][Kk][Tt][.]|[Nn][Oo][Vv][.]|[Dd][Ee][Cc][.]) (?P<day_1>[12]\\d|3[01]|0?[1-9])(?P<djel_1>[ ,;:?!])', u'\\g<month_1> \\g<day_1>.\\g<djel_1>', u'Ha d\xe1tum, hi\xe1nyzik a pont. \\n http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Egy\xe9b_tudnival\xf3k#296.', False], [u'(?iu)\\b(?P<month_1>[Jj][Aa][Nn][Uu][\xc1\xe1][Rr]|[Ff][Ee][Bb][Rr][Uu][\xc1\xe1][Rr]|[Mm][\xc1\xe1][Rr][Cc][Ii][Uu][Ss]|[\xc1\xe1][Pp][Rr][Ii][Ll][Ii][Ss]|[Mm][\xc1\xe1][Jj][Uu][Ss]|[Jj][\xda\xfa][Nn][Ii][Uu][Ss]|[Jj][\xda\xfa][Ll][Ii][Uu][Ss]|[Aa][Uu][Gg][Uu][Ss][Zz][Tt][Uu][Ss]|[Ss][Zz][Ee][Pp][Tt][Ee][Mm][Bb][Ee][Rr]|[Oo][Kk][Tt][\xd3\xf3][Bb][Ee][Rr]|[Nn][Oo][Vv][Ee][Mm][Bb][Ee][Rr]|[Dd][Ee][Cc][Ee][Mm][Bb][Ee][Rr]|[Jj][Aa][Nn][.]|[Ff][Ee][Bb][Rr][.]|[Mm][\xc1\xe1][Rr][Cc][.]|[\xc1\xe1][Pp][Rr][.]|[Mm][\xc1\xe1][Jj][.]|[Jj][\xda\xfa][Nn][.]|[Jj][\xda\xfa][Ll][.]|[Aa][Uu][Gg][.]|[Ss][Zz][Ee][Pp][Tt][.]|[Oo][Kk][Tt][.]|[Nn][Oo][Vv][.]|[Dd][Ee][Cc][.]) (?P<day_1>[12]\\d|3[01]|0?[1-9]) (?P<nu_1>[\xd3\xf3][Tt][Aa]|[Ee][Ll][\u0150\u0151][Tt][Tt][Ii]?|[Uu][Tt][\xc1\xe1][Nn][Ii]?|[Kk][\xd6\xf6][Zz][\xd6\xf6][Tt][Tt][Ii]?)', u'\\g<month_1> \\g<day_1>. \\g<nu_1>', u'A nap ut\xe1n itt pontot \xedrunk. \\n http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Egy\xe9b_tudnival\xf3k#297.', False], [u'(?iu)\\b(?P<month_1>[Jj][Aa][Nn][Uu][\xc1\xe1][Rr]|[Ff][Ee][Bb][Rr][Uu][\xc1\xe1][Rr]|[Mm][\xc1\xe1][Rr][Cc][Ii][Uu][Ss]|[\xc1\xe1][Pp][Rr][Ii][Ll][Ii][Ss]|[Mm][\xc1\xe1][Jj][Uu][Ss]|[Jj][\xda\xfa][Nn][Ii][Uu][Ss]|[Jj][\xda\xfa][Ll][Ii][Uu][Ss]|[Aa][Uu][Gg][Uu][Ss][Zz][Tt][Uu][Ss]|[Ss][Zz][Ee][Pp][Tt][Ee][Mm][Bb][Ee][Rr]|[Oo][Kk][Tt][\xd3\xf3][Bb][Ee][Rr]|[Nn][Oo][Vv][Ee][Mm][Bb][Ee][Rr]|[Dd][Ee][Cc][Ee][Mm][Bb][Ee][Rr]|[Jj][Aa][Nn][.]|[Ff][Ee][Bb][Rr][.]|[Mm][\xc1\xe1][Rr][Cc][.]|[\xc1\xe1][Pp][Rr][.]|[Mm][\xc1\xe1][Jj][.]|[Jj][\xda\xfa][Nn][.]|[Jj][\xda\xfa][Ll][.]|[Aa][Uu][Gg][.]|[Ss][Zz][Ee][Pp][Tt][.]|[Oo][Kk][Tt][.]|[Nn][Oo][Vv][.]|[Dd][Ee][Cc][.]) (?P<day_1>[12]\\d|3[01]|0?[1-9])[.] [\xc9\xe9][Ss] (?P<day_2>[12]\\d|3[01]|0?[1-9]) (?P<nu_1>[\xd3\xf3][Tt][Aa]|[Ee][Ll][\u0150\u0151][Tt][Tt][Ii]?|[Uu][Tt][\xc1\xe1][Nn][Ii]?|[Kk][\xd6\xf6][Zz][\xd6\xf6][Tt][Tt][Ii]?)', u'\\g<month_1> \\g<day_1>. \xe9s \\g<day_2>. \\g<nu_1>', u'A nap ut\xe1n itt pontot \xedrunk. \\n http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Egy\xe9b_tudnival\xf3k#297.', False], [u'(?iu)\\b(?P<month_1>[Jj][Aa][Nn][Uu][\xc1\xe1][Rr]|[Ff][Ee][Bb][Rr][Uu][\xc1\xe1][Rr]|[Mm][\xc1\xe1][Rr][Cc][Ii][Uu][Ss]|[\xc1\xe1][Pp][Rr][Ii][Ll][Ii][Ss]|[Mm][\xc1\xe1][Jj][Uu][Ss]|[Jj][\xda\xfa][Nn][Ii][Uu][Ss]|[Jj][\xda\xfa][Ll][Ii][Uu][Ss]|[Aa][Uu][Gg][Uu][Ss][Zz][Tt][Uu][Ss]|[Ss][Zz][Ee][Pp][Tt][Ee][Mm][Bb][Ee][Rr]|[Oo][Kk][Tt][\xd3\xf3][Bb][Ee][Rr]|[Nn][Oo][Vv][Ee][Mm][Bb][Ee][Rr]|[Dd][Ee][Cc][Ee][Mm][Bb][Ee][Rr]|[Jj][Aa][Nn][.]|[Ff][Ee][Bb][Rr][.]|[Mm][\xc1\xe1][Rr][Cc][.]|[\xc1\xe1][Pp][Rr][.]|[Mm][\xc1\xe1][Jj][.]|[Jj][\xda\xfa][Nn][.]|[Jj][\xda\xfa][Ll][.]|[Aa][Uu][Gg][.]|[Ss][Zz][Ee][Pp][Tt][.]|[Oo][Kk][Tt][.]|[Nn][Oo][Vv][.]|[Dd][Ee][Cc][.]) (?P<day_1>[12]\\d|3[01]|0?[1-9]) [\xc9\xe9][Ss] (?P<day_2>[12]\\d|3[01]|0?[1-9])[.]? (?P<nu_1>[\xd3\xf3][Tt][Aa]|[Ee][Ll][\u0150\u0151][Tt][Tt][Ii]?|[Uu][Tt][\xc1\xe1][Nn][Ii]?|[Kk][\xd6\xf6][Zz][\xd6\xf6][Tt][Tt][Ii]?)', u'\\g<month_1> \\g<day_1>. \xe9s \\g<day_2>. \\g<nu_1>', u'A nap ut\xe1n itt pontot \xedrunk. \\n http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Egy\xe9b_tudnival\xf3k#297.', False], [u'(?iu)\\b(?P<month_1>[Jj][Aa][Nn][Uu][\xc1\xe1][Rr]|[Ff][Ee][Bb][Rr][Uu][\xc1\xe1][Rr]|[Mm][\xc1\xe1][Rr][Cc][Ii][Uu][Ss]|[\xc1\xe1][Pp][Rr][Ii][Ll][Ii][Ss]|[Mm][\xc1\xe1][Jj][Uu][Ss]|[Jj][\xda\xfa][Nn][Ii][Uu][Ss]|[Jj][\xda\xfa][Ll][Ii][Uu][Ss]|[Aa][Uu][Gg][Uu][Ss][Zz][Tt][Uu][Ss]|[Ss][Zz][Ee][Pp][Tt][Ee][Mm][Bb][Ee][Rr]|[Oo][Kk][Tt][\xd3\xf3][Bb][Ee][Rr]|[Nn][Oo][Vv][Ee][Mm][Bb][Ee][Rr]|[Dd][Ee][Cc][Ee][Mm][Bb][Ee][Rr]|[Jj][Aa][Nn][.]|[Ff][Ee][Bb][Rr][.]|[Mm][\xc1\xe1][Rr][Cc][.]|[\xc1\xe1][Pp][Rr][.]|[Mm][\xc1\xe1][Jj][.]|[Jj][\xda\xfa][Nn][.]|[Jj][\xda\xfa][Ll][.]|[Aa][Uu][Gg][.]|[Ss][Zz][Ee][Pp][Tt][.]|[Oo][Kk][Tt][.]|[Nn][Oo][Vv][.]|[Dd][Ee][Cc][.]) (?P<day_1>[12]\\d|3[01]|0?[1-9])[-\u2013](?P<day_2>[12]\\d|3[01]|0?[1-9]) (?P<nu_1>[\xd3\xf3][Tt][Aa]|[Ee][Ll][\u0150\u0151][Tt][Tt][Ii]?|[Uu][Tt][\xc1\xe1][Nn][Ii]?|[Kk][\xd6\xf6][Zz][\xd6\xf6][Tt][Tt][Ii]?)', u'\\g<month_1> \\g<day_1>\u2013\\g<day_2>. \\g<nu_1>', u'A nap ut\xe1n itt pontot \xedrunk. \\n http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Egy\xe9b_tudnival\xf3k#297.', False], [u'(?iu)\\b(?P<month_1>[Jj][Aa][Nn][Uu][\xc1\xe1][Rr]|[Ff][Ee][Bb][Rr][Uu][\xc1\xe1][Rr]|[Mm][\xc1\xe1][Rr][Cc][Ii][Uu][Ss]|[\xc1\xe1][Pp][Rr][Ii][Ll][Ii][Ss]|[Mm][\xc1\xe1][Jj][Uu][Ss]|[Jj][\xda\xfa][Nn][Ii][Uu][Ss]|[Jj][\xda\xfa][Ll][Ii][Uu][Ss]|[Aa][Uu][Gg][Uu][Ss][Zz][Tt][Uu][Ss]|[Ss][Zz][Ee][Pp][Tt][Ee][Mm][Bb][Ee][Rr]|[Oo][Kk][Tt][\xd3\xf3][Bb][Ee][Rr]|[Nn][Oo][Vv][Ee][Mm][Bb][Ee][Rr]|[Dd][Ee][Cc][Ee][Mm][Bb][Ee][Rr]|[Jj][Aa][Nn][.]|[Ff][Ee][Bb][Rr][.]|[Mm][\xc1\xe1][Rr][Cc][.]|[\xc1\xe1][Pp][Rr][.]|[Mm][\xc1\xe1][Jj][.]|[Jj][\xda\xfa][Nn][.]|[Jj][\xda\xfa][Ll][.]|[Aa][Uu][Gg][.]|[Ss][Zz][Ee][Pp][Tt][.]|[Oo][Kk][Tt][.]|[Nn][Oo][Vv][.]|[Dd][Ee][Cc][.]) (?P<day_1>[12]\\d|3[01]|0?[1-9])-(?P<day_2>[12]\\d|3[01]|0?[1-9]). (?P<nu_1>[\xd3\xf3][Tt][Aa]|[Ee][Ll][\u0150\u0151][Tt][Tt][Ii]?|[Uu][Tt][\xc1\xe1][Nn][Ii]?|[Kk][\xd6\xf6][Zz][\xd6\xf6][Tt][Tt][Ii]?)', u'\\g<month_1> \\g<day_1>\u2013\\g<day_2>. \\g<nu_1>', u'A napok k\xf6z\xe9 nagyk\xf6t\u0151jelet \xedrunk. \\n http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Egy\xe9b_tudnival\xf3k#297.', False], [u'(?u)\\b(?P<year_1>[12]\\d\\d\\d)[.](?P<monthnum_1>0?[1-9]|1[012])[.](?P<day_1>[12]\\d|3[01]|0?[1-9])(?P<optdot_1>([.]|))(?P<text_1>[^\\s][^\\s]*)', u'\\g<year_1>. \\g<monthnum_1>.\xa0\\g<day_1>\\g<optdot_1>\\g<text_1>', u'Sz\xf3k\xf6z a d\xe1tumban. \\n http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Egy\xe9b_tudnival\xf3k#293.', False], [u'(?iu)(?P<month_1>[Jj][Aa][Nn][Uu][\xc1\xe1][Rr]|[Ff][Ee][Bb][Rr][Uu][\xc1\xe1][Rr]|[Mm][\xc1\xe1][Rr][Cc][Ii][Uu][Ss]|[\xc1\xe1][Pp][Rr][Ii][Ll][Ii][Ss]|[Mm][\xc1\xe1][Jj][Uu][Ss]|[Jj][\xda\xfa][Nn][Ii][Uu][Ss]|[Jj][\xda\xfa][Ll][Ii][Uu][Ss]|[Aa][Uu][Gg][Uu][Ss][Zz][Tt][Uu][Ss]|[Ss][Zz][Ee][Pp][Tt][Ee][Mm][Bb][Ee][Rr]|[Oo][Kk][Tt][\xd3\xf3][Bb][Ee][Rr]|[Nn][Oo][Vv][Ee][Mm][Bb][Ee][Rr]|[Dd][Ee][Cc][Ee][Mm][Bb][Ee][Rr]|[Jj][Aa][Nn][.]|[Ff][Ee][Bb][Rr][.]|[Mm][\xc1\xe1][Rr][Cc][.]|[\xc1\xe1][Pp][Rr][.]|[Mm][\xc1\xe1][Jj][.]|[Jj][\xda\xfa][Nn][.]|[Jj][\xda\xfa][Ll][.]|[Aa][Uu][Gg][.]|[Ss][Zz][Ee][Pp][Tt][.]|[Oo][Kk][Tt][.]|[Nn][Oo][Vv][.]|[Dd][Ee][Cc][.]) 1[.]?-(?P<e_1>[Ee]|[Ii]|[Ee][Ii]\\w*|[\xc9\xe9]\\w+)\\b', u'\\g<month_1> 1-j\\g<e_1>', u'Elseje sz\xe1mjegyes \xedr\xe1sa. \\n http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Egy\xe9b_tudnival\xf3k#296.', False], [u'(?u)\\bstb[.], stb[.]', u'stb. stb.\\nstb.; stb.', u'K\xe9t stb. k\xf6z\xe9 nem tesz\xfcnk vessz\u0151t.', False], [u'(?u)(?<![-\\w\u2013.,\xad])(db|Ft)[.](?= (?P<abc_1>[a-z\xf6\xfc\xf3\u0171\u0151\xfa\xe9\xe1\xed]))(?![-\\w\u2013\xad])', u'\\1', u'Nem ponttal \xedrjuk ezt a r\xf6vid\xedt\xe9st.', False], [u'(?u)(?<![-\\w\u2013.,\xad])(db|Ft)[.](?=[,;:])(?![-\\w\u2013\xad])', u'\\1', u'Nem ponttal \xedrjuk ezt a r\xf6vid\xedt\xe9st.', False], [u'(?iu)\\b(?P<country_1>[Aa][Ll][Bb][\xc1\xe1][Nn]|[Aa][Mm][Ee][Rr][Ii][Kk][Aa][Ii]|[Aa][Nn][Gg][Oo][Ll]|[Bb][Ee][Ll][Gg][Aa]|[Bb][Oo][Ll][Gg][\xc1\xe1][Rr]|[Bb][Oo][Ss][Nn][Yy][\xc1\xe1][Kk]|[Bb][Rr][Ii][Tt]|[Cc][Ii][Pp][Rr][Uu][Ss][Ii]|[Cc][Ss][Ee][Hh]|[Dd][\xc1\xe1][Nn]|[\xc9\xe9][Ss][Zz][Tt]|[Ff][Ii][Nn][Nn]|[Ff][Rr][Aa][Nn][Cc][Ii][Aa]|[Gg][\xd6\xf6][Rr][\xd6\xf6][Gg]|[Hh][Oo][Ll][Ll][Aa][Nn][Dd]|[Hh][Oo][Rr][Vv][\xc1\xe1][Tt]|[\xcd\xed][Rr]|[Jj][Aa][Pp][\xc1\xe1][Nn]|[Kk][\xcd\xed][Nn][Aa][Ii]|[Ll][Ee][Nn][Gg][Yy][Ee][Ll]|[Ll][Ee][Tt][Tt]|[Ll][Ii][Tt][Vv][\xc1\xe1][Nn]|[Mm][Aa][Cc][Ee][Dd][\xd3\xf3][Nn]|[Mm][Aa][Gg][Yy][Aa][Rr]|[Mm][\xc1\xe1][Ll][Tt][Aa][Ii]|[Nn][\xc9\xe9][Mm][Ee][Tt]|[Nn][Oo][Rr][Vv][\xc9\xe9][Gg]|[Oo][Ll][Aa][Ss][Zz]|[Oo][Rr][Oo][Ss][Zz]|[Oo][Ss][Zz][Tt][Rr][\xc1\xe1][Kk]|[Pp][Oo][Rr][Tt][Uu][Gg][\xc1\xe1][Ll]|[Rr][Oo][Mm][\xc1\xe1][Nn]|[Ss][Pp][Aa][Nn][Yy][Oo][Ll]|[Ss][Vv][\xc1\xe1][Jj][Cc][Ii]|[Ss][Vv][\xc9\xe9][Dd]|[Ss][Zz][Ee][Rr][Bb]|[Ss][Zz][Ll][Oo][Vv][\xc1\xe1][Kk]|[Ss][Zz][Ll][Oo][Vv][\xc9\xe9][Nn]|[Tt][\xd6\xf6][Rr][\xd6\xf6][Kk]|[Uu][Kk][Rr][\xc1\xe1][Nn])-(?P<country_2>[Aa][Ll][Bb][\xc1\xe1][Nn]|[Aa][Mm][Ee][Rr][Ii][Kk][Aa][Ii]|[Aa][Nn][Gg][Oo][Ll]|[Bb][Ee][Ll][Gg][Aa]|[Bb][Oo][Ll][Gg][\xc1\xe1][Rr]|[Bb][Oo][Ss][Nn][Yy][\xc1\xe1][Kk]|[Bb][Rr][Ii][Tt]|[Cc][Ii][Pp][Rr][Uu][Ss][Ii]|[Cc][Ss][Ee][Hh]|[Dd][\xc1\xe1][Nn]|[\xc9\xe9][Ss][Zz][Tt]|[Ff][Ii][Nn][Nn]|[Ff][Rr][Aa][Nn][Cc][Ii][Aa]|[Gg][\xd6\xf6][Rr][\xd6\xf6][Gg]|[Hh][Oo][Ll][Ll][Aa][Nn][Dd]|[Hh][Oo][Rr][Vv][\xc1\xe1][Tt]|[\xcd\xed][Rr]|[Jj][Aa][Pp][\xc1\xe1][Nn]|[Kk][\xcd\xed][Nn][Aa][Ii]|[Ll][Ee][Nn][Gg][Yy][Ee][Ll]|[Ll][Ee][Tt][Tt]|[Ll][Ii][Tt][Vv][\xc1\xe1][Nn]|[Mm][Aa][Cc][Ee][Dd][\xd3\xf3][Nn]|[Mm][Aa][Gg][Yy][Aa][Rr]|[Mm][\xc1\xe1][Ll][Tt][Aa][Ii]|[Nn][\xc9\xe9][Mm][Ee][Tt]|[Nn][Oo][Rr][Vv][\xc9\xe9][Gg]|[Oo][Ll][Aa][Ss][Zz]|[Oo][Rr][Oo][Ss][Zz]|[Oo][Ss][Zz][Tt][Rr][\xc1\xe1][Kk]|[Pp][Oo][Rr][Tt][Uu][Gg][\xc1\xe1][Ll]|[Rr][Oo][Mm][\xc1\xe1][Nn]|[Ss][Pp][Aa][Nn][Yy][Oo][Ll]|[Ss][Vv][\xc1\xe1][Jj][Cc][Ii]|[Ss][Vv][\xc9\xe9][Dd]|[Ss][Zz][Ee][Rr][Bb]|[Ss][Zz][Ll][Oo][Vv][\xc1\xe1][Kk]|[Ss][Zz][Ll][Oo][Vv][\xc9\xe9][Nn]|[Tt][\xd6\xf6][Rr][\xd6\xf6][Kk]|[Uu][Kk][Rr][\xc1\xe1][Nn])\\b', u'\\g<country_1>\u2013\\g<country_2>', u'N\xe9pnevek k\xf6z\xe9 nagyk\xf6t\u0151jelet tesz\xfcnk.', False], [u'(?u)\\b(?P<year2_1>(1\\d\\d[1-9]|1\\d[1-9]\\d|20\\d[1-9]|20[1-9]\\d))-(?P<year_1>[12]\\d\\d\\d)\\b ', u'\\g<year_1>\u2013\\g<year_2> ', u'\xc9vsz\xe1mok k\xf6z\xe9 nagyk\xf6t\u0151jelet tesz\xfcnk.', False], [u'(?u)\\b(?P<year_1>[12]\\d\\d\\d)-(?P<year2_1>(1\\d\\d[1-9]|1\\d[1-9]\\d|20\\d[1-9]|20[1-9]\\d))\\b ', u'\\g<year_1>\u2013\\g<year_2> ', u'\xc9vsz\xe1mok k\xf6z\xe9 nagyk\xf6t\u0151jelet tesz\xfcnk.', False], [u'(?u)\\b(?P<year_1>[12]\\d\\d\\d)-(\\d\\d)\\b ', u'\\g<year_1>\u2013\\2 ', u'\xc9vsz\xe1mok k\xf6z\xe9 nagyk\xf6t\u0151jelet tesz\xfcnk.', False], [u'(?u)([A-Z\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd]\\w*)-(\\d+(-\\w+)?)', u'\\1\u2013\\2', u'T\xedpusn\xe9v \xe9s -sz\xe1m k\xf6z\xe9 nagyk\xf6t\u0151jelet tesz\xfcnk. \\n http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Az_\xedr\xe1sjelek#263.', False], [u'(?u)pp[.] (\\d+)-(\\d+)[.]', u'pp. \\1\u2013\\2.', u'Oldalsz\xe1mok k\xf6z\xe9 nagyk\xf6t\u0151jelet tesz\xfcnk. \\n http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Az_\xedr\xe1sjelek#263.', False], [u'(?u)(\\d+)-(\\d+)[.] (o[.]|oldal\\w*)', u'\\1\u2013\\2. \\3', u'Oldalsz\xe1m', False], [u'(?u) (u[.]|utca|\xfat|t\xe9r) (\\d\\d*)-(\\d\\d*)[.]', u' \\1 \\2\u2013\\3.', u'Nagyk\xf6t\u0151jel a h\xe1zsz\xe1mban. \\n http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Egy\xe9b_tudnival\xf3k#298.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Nn][Ee] [Jj][\xc1\xe1][Tt][Ss]([Zz][Uu][Nn][Kk]|[Zz][Aa][Tt][Oo][Kk]|[Zz][Aa][Nn][Aa][Kk])(?![-\\w\u2013\xad])', u'ne j\xe1tss\\1', u'Helyes\xedr\xe1si hiba.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Aa\xc1\xe1] [Ll][Aa] [Cc][Aa][Rr][Tt][Ee](?![-\\w\u2013\xad])', u'\xe0 la carte', u'Helyesen \xe0 la carte.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])([\xc1\xe1][Ll][Ll][Tt][Aa]([Ss][Ss]\\w*|[Tt]\\w*))(?![-\\w\u2013\xad])', u'\xe1lta\\2', u'\xc1ltat, hiteget \xe9rtelemben egy l-lel \xedrjuk.', u'not morph(LOCALE,m.group(1), "pa:")'], [u'(?iu)(?<![-\\w\u2013.,\xad])[\xd6\xf6][Nn][\xc1\xe1][Ll][Ll]([Tt][Aa][Tt][\xd3\xf3\xc1\xe1]\\w*)(?![-\\w\u2013\xad])', u'\xf6n\xe1l\\1', u'Helyesen egy l-lel.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Bb][Ee][Ll][Ss][\u0150\u0151][Ss][\xc9\xe9][Gg][Ee][Ss](?![-\\w\u2013\xad])', u'bens\u0151s\xe9ges\\nbels\u0151s\xe9gb\u0151l k\xe9sz\xfclt', u'Sz\xf3t\xe9veszt\xe9s vagy sz\xf3j\xe1t\xe9k?', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Dd][Ee][Hh][Oo][Gg][Yy] [Ii][Ss](?![-\\w\u2013\xad])', u'dehogyis', u'Egybe\xedr\xe1s \u201eegy\xe1ltal\xe1n nem\u201d jelent\xe9sben.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Dd][Ee][Hh][Oo][Gg][Yy] [Nn][Ee][Mm](?![-\\w\u2013\xad])', u'dehogynem', u'Egybe\xedr\xe1s \u201ede igen\u201d jelent\xe9sben.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Dd][Ee][Hh][Oo][Gg][Yy][Ii][Ss] [Nn][Ee][Mm](?![-\\w\u2013\xad])', u'dehogyisnem', u'Egybe\xedr\xe1s \u201ede igen\u201d jelent\xe9sben.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ee][Kk][\xc9\xe9][Pp][Pp][Ee][Nn](?![-\\w\u2013\xad])', u'ekk\xe9ppen', u'Helyesen k\xe9t k-val.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ee][Gg][Yy][Ee][Ll] ([Tt][\xd6\xf6][Bb][Bb]\\w*|[Kk][Ee][Vv][Ee][Ss][Ee][Bb][Bb]\\w*)(?![-\\w\u2013\xad])', u'eggyel \\1', u'1-gyel \xe9rtelemben hossz\xfa gy-vel \xedrjuk.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ee][Gg][Yy][Ee][Nn][Ll][\u0150\u0151][Rr][Ee](?![-\\w\u2013\xad])', u'egyel\u0151re\\negyform\xe1ra\\nd\xf6ntetlenre\\negyenl\u0151 sz\xe1m\xfara\\nazonos m\xe9ret\u0171re', u'Helyes\xedr\xe1si (egyel\u0151re) vagy st\xedlushiba (egyform\xe1ra).', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ee][Gg][Yy][Ii]([Vv][\xc1\xe1][Ss][\xda\xfa]\\w*)(?![-\\w\u2013\xad])', u'egy\xed\\1', u'Hossz\xfa \xed-vel helyes.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ee][Gg][Yy][Tt][\u0150\u0151][Ll]-[Ee][Gg][Yy][Ii][Gg](?![-\\w\u2013\xad])', u'egyt\u0151l egyig', u'K\xf6t\u0151jel n\xe9lk\xfcl \xedrjuk.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ee][Ll][\u0150\u0151][Rr][Ee] [Hh][\xc1\xe1][Tt][Rr][Aa](?![-\\w\u2013\xad])', u'el\u0151re-h\xe1tra', u'K\xf6t\u0151jellel \xedrjuk.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ee][Ll][\u0150\u0151][Rr][Ee] [Ll][\xc1\xe1][Tt][Hh][Aa][Tt][\xd3\xf3][Ll][Aa][Gg](?![-\\w\u2013\xad])', u'el\u0151rel\xe1that\xf3lag', u'Egybe\xedr\xe1s.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ee][Mm][Aa][Ii][Ll]:(?![-\\w\u2013\xad])', u'e-mail:', u'e-mail (elektronikus lev\xe9l)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ee][Mm][Aa][Ii][Ll]-[Ll][Ee][Ll](?![-\\w\u2013\xad])', u'e-maillel', u'e-mail (elektronikus lev\xe9l)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ee]([Mm][Aa][Ii][Ll][ -]|-[Mm][Aa][Ii][Ll]-|-[Mm][Aa][Ii][Ll])([Cc][\xcd\xed][Mm]\\w*)(?![-\\w\u2013\xad])', u'e-mail \\2', u'Helyesen e-mail c\xedm.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ee][Xx][- ](\\w+)(?![-\\w\u2013\xad])', u'ex\\1', u'Egybe\xedr\xe1s.', u'spell(LOCALE,"ex" + m.group(1))'], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ff][Ii][Gg][Yy][Ee][Ll][Ee][Mm][Rr][Ee]([Mm][\xc9\xe9][Ll][Tt][\xd3\xf3]\\w*)(?![-\\w\u2013\xad])', u'figyelemre \\1', u'K\xfcl\xf6n\xedr\xe1s (kiv\xe9ve: \u201eigen figyelemrem\xe9lt\xf3\u201d).', u'wordmin(s[:m.start()],1) != "igen"'], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ii][Gg][Ee][Nn] [Ff][Ii][Gg][Yy][Ee][Ll][Ee][Mm][Rr][Ee] ([Mm][\xc9\xe9][Ll][Tt][\xd3\xf3]\\w*)(?![-\\w\u2013\xad])', u'igen figyelemre\\1', u'Egybe\xedr\xe1s.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])([\xc1\xe1][Ll][Ll][Aa][Tt]|[Cc][Ss][Ee][Pp][Pp]|[Cc][Ss][Ii][Ll][Ll][Aa][Gg]|[\xc9\xe9][Kk]|[Ee][Ll][Ll][Ii][Pp][Ss][Zz][Ii][Ss]|[Ee][Mm][Bb][Ee][Rr]|[Ff][\xc9\xe9][Ll][Gg][\xd6\xf6][Mm][Bb]|[Ff][\xc9\xe9][Ll][Kk][\xd6\xf6][Rr]|[Gg][\xc1\xe1][Zz]|[Gg][\xd6\xf6][Mm][Bb]|[Gg][\xda\xfa][Ll][Aa]|[Hh][Aa][Rr][Aa][Nn][Gg]|[Hh][\xc1\xe1][Rr][Oo][Mm][Ss][Zz][\xd6\xf6][Gg]|[Hh][Aa][Ss][\xc1\xe1][Bb]|[Hh][Aa][Tt][Ss][Zz][\xd6\xf6][Gg]|[Hh][Ee][Nn][Gg][Ee][Rr]|[Kk][Aa][Gg][Yy][Ll][\xd3\xf3]|[Kk][Ee][Rr][Ee][Ss][Zz][Tt]|[Kk][Oo][Cc][Kk][Aa]|[Kk][Oo][Rr][Oo][Nn][Gg]|[Kk][\xd6\xf6][Rr]|[Kk][\xd6\xf6][Rr][Tt][Ee]|[Kk][\xda\xfa][Pp]|[Nn][\xc9\xe9][Gg][Yy][Ss][Zz][\xd6\xf6][Gg]|[Nn][\xc9\xe9][Gg][Yy][Zz][Ee][Tt]|[Nn][Yy][Ee][Rr][Ee][Gg]|[Pp][Aa][Tt][Kk][\xd3\xf3]|[Pp][Ii][Rr][Aa][Mm][Ii][Ss]|[Pp][Ii][Ss][Kk][\xd3\xf3][Tt][Aa]|[Ss][Zz][Ii][Vv][Aa][Rr]|[Tt][Oo][Jj][\xc1\xe1][Ss]|[Tt][\xd6\xf6][Ll][Cc][Ss][\xc9\xe9][Rr]|[Tt][Rr][Aa][Pp][\xc9\xe9][Zz]|[Vv][Ee][Ss][Ee])([Ff][Oo][Rr][Mm][\xc1\xe1][Jj][\xda\xfa]|[Aa][Ll][Aa][Kk][\xda\xfa])(?![-\\w\u2013\xad])', u'\\1 \\2', u'K\xfcl\xf6n\xedr\xe1s.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ff][\u0150\u0151]([Ii][Rr][\xc1\xe1][Nn][Yy]\\w*|[Kk][\xd6\xf6][Zz][Ll][Ee][Kk][Ee][Dd][\xc9\xe9][Ss]\\w*|[Ss][Zz][Aa][Bb][\xc1\xe1][Ll][Yy]\\w*|[Ss][Zz][Ee][Rr][Vv][Ee][Zz][\u0150\u0151]\\w*)(?![-\\w\u2013\xad])', u'f\u0151 \\1', u'A \u201ef\u0151 m\u0171\u201d-h\xf6z hasonl\xf3an k\xfcl\xf6n\xedrjuk.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Hh][\xc1\xe1][Tt][Bb][Aa] ([Tt][\xc1\xe1][Mm][Aa][Dd][\xc1\xe1][Ss]\\w*)(?![-\\w\u2013\xad])', u'h\xe1tba\\1', u'Egybe\xedr\xe1s.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ii][Dd][\u0150\u0151][Rr][\u0150\u0151][Ll]-[Ii][Dd][\u0150\u0151][Rr][Ee](?![-\\w\u2013\xad])', u'id\u0151r\u0151l id\u0151re', u'K\xfcl\xf6n\xedr\xe1s.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Jj][Ii][Nn][Gg] [\xc9\xe9][Ss] [Jj][Aa][Nn][Gg](?![-\\w\u2013\xad])', u'jin \xe9s jang', u'Helyesen jin \xe9s jang.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Kk][\u0150\u0151][Rr](([\xd6\xf6][Zz]|[\xda\xfa][Tt]|[Uu][Tt])\\w*)(?![-\\w\u2013\xad])', u'k\xf6r\\1', u'R\xf6vid \xf6-vel a k\xf6r \xf6sszet\xe9teleiben.', u'morph(LOCALE,m.group(0), ur"st:k\u0151r\\b")'], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ll][\xc9\xe9][Gg][Yy][Ss][Zz][\xcd\xed][Vv][Ee][Ss](?![-\\w\u2013\xad])', u'l\xe9gy sz\xedves\\nlegy\xe9l sz\xedves', u'Legy\xe9l sz\xedves \xe9rtelemben k\xfcl\xf6n\xedrjuk.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ll][Ee][Gg][Aa][Ll][\xc1\xe1][Bb][Bb] [Ii][Ss](?![-\\w\u2013\xad])', u'legal\xe1bbis', u'Egybe\xedr\xe1s.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])L[Ii][Cc][Hh][Tt][Ee][Nn]([Ss][Tt][Ee][Ii][Nn]\\w*)(?![-\\w\u2013\xad])', u'Liechten\\1', u'Helyesen Liechtenstein.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Mm][Ee][Ll][Ll][\xc9\xe9][Kk][Hh][Ee][Ll][Yy]([Ss][\xc9\xe9][Gg]\\w*)(?![-\\w\u2013\xad])', u'mell\xe9khelyi\\1', u'Helyis\xe9g, mint szoba.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Mm][\xda\xfa]([Ll][Aa][Nn][Dd][\xd3\xf3]\\w*)(?![-\\w\u2013\xad])', u'mu\\1', u'Helyesen r\xf6vid u-val.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Nn][Ee][Mm][Bb][Ii][Zz][Tt][Oo][Ss](?![-\\w\u2013\xad])', u'nem biztos', u'K\xfcl\xf6n\xedr\xe1s.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Oo][Rr][Ii][Gg][Ii][Nn][\xc1\xe1][Ll][Tt](?![-\\w\u2013\xad])', u'origin\xe1l\\neredeti\\nbontatlan', u'Ha nem t\xe1rgyesetben van, \u201et\u201d n\xe9lk\xfcl \xedrjuk.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])([Ss][Zz][\xc9\xe9][Nn]|[Kk][\xc9\xe9][Nn]|[Mm][Aa][Nn][Gg][\xc1\xe1][Nn]|[Nn][Ii][Tt][Rr][Oo][Gg][\xc9\xe9][Nn]|[\xd3\xf3][Nn]|[Tt][Ii][Tt][\xc1\xe1][Nn]|[Tt][\xd3\xf3][Rr][Ii][Uu][Mm])([Dd][Ii][Oo][Xx][Ii][Dd]\\w*)(?![-\\w\u2013\xad])', u'\\1-\\2', u'K\xf6t\u0151jeles alak.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])([Ss][Zz][\xc9\xe9][Nn]|[Kk][\xc9\xe9][Nn]|[Nn][Ii][Tt][Rr][Oo][Gg][\xc9\xe9][Nn])([Mm][Oo][Nn][Oo][Xx][Ii][Dd]\\w*)(?![-\\w\u2013\xad])', u'\\1-\\2', u'K\xf6t\u0151jeles alak.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Tt][Oo][Vv][\xc1\xe1][Bb][Bb][Ii][Tt][Tt][Uu][Nn][Kk](?![-\\w\u2013\xad])', u'tov\xe1bb\xedtunk\\ntov\xe1bb ittunk', u'Helyes\xedr\xe1si hiba.', False], [u'(?u)\\bun[.]', u'\xfan.', u'\xdagy nevezett r\xf6vid\xedt\xe9se \xfan. (AkH. 282.)', u'word(s[m.end():],1) and not re.match(u"[A-Z\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd]", word(s[m.end():],1))'], [u'(?iu)\\b[Vv][\xcd\xed][Zz]([Hh][Aa][Nn][Gg]\\w*)\\b', u'vissz\\1', u'Sz\xf3t\xe9veszt\xe9s?', False], [u'(?u)^[aA] (?P<word_1>[a\xe1e\xe9i\xedo\xf3\xf6\u0151u\xfa\xfc\u0171A\xc1E\xc9I\xcdO\xd3\xd6\u0150U\xda\xdc\u0170]\\w*)', u'az \\g<word_1>', u'Hib\xe1s n\xe9vel\u0151?', u'not re.match(r"(?i)i(ii?|[vx])$|Unicode$|Unix\\w*$", m.group("word_1")) and spell(LOCALE,m.group("word_1"))'], [u'(?u)(?<!(\\d[.]|az) )\\b(?P<a_1>[aA]) (?P<word_1>[a\xe1e\xe9i\xedo\xf3\xf6\u0151u\xfa\xfc\u0171A\xc1E\xc9I\xcdO\xd3\xd6\u0150U\xda\xdc\u0170]\\w*)', u'\\g<a_1>z \\g<word_1>\\n\\g<word_1>', u'Hib\xe1s vagy felesleges n\xe9vel\u0151?', u'wordmin(s[:m.start()],1) and not re.match(r"(?i)i(ii?|[vx])$|Unicode$|Unix\\w*$", m.group("word_1")) and spell(LOCALE,m.group("word_1"))'], [u'(?iu)(?<![-\\w\u2013.,\xad])[Aa](?![-\\w\u2013\xad])', u'az', u'Hib\xe1s n\xe9vel\u0151.', u'word(s[m.end():],1) and re.match(r"(1|5\\d*|[15]\\d\\d\\d)[.]?$", word(s[m.end():],1))'], [u'(?iu)(?<![-\\w\u2013.,\xad])[Aa][Zz](?![-\\w\u2013\xad])', u'a', u'Hib\xe1s n\xe9vel\u0151?', u'not option(LOCALE,"grammar") and word(s[m.end():],2) and re.match(ur"(alfejezet|alszakasz|\xe1br|bekezd\xe9s|diagram|fejezet|k\xe9p|lap|oldal|paragrafus|szakasz|t\xe1bl\xe1zat)\\w*", word(s[m.end():],2)) and re.match(r"([02-46-9]|[1-46-9]\\d|[1-46-9]\\d\\d|[2346-9]\\d\\d\\d)[.]", word(s[m.end():],1))'], [u'(?iu)(?<![-\\w\u2013.,\xad])[Aa][Zz](?![-\\w\u2013\xad])', u'a', u'Hib\xe1s n\xe9vel\u0151?', u'option(LOCALE,"grammar") and word(s[m.end():],1) and re.match(r"([02-46-9]|[1-46-9]\\d|[1-46-9]\\d\\d|[2346-9]\\d\\d\\d)[.]", word(s[m.end():],1))'], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<num_1>\\d+|\\d+,\\d+) [Gg][Rr][.]?-[Mm][Aa][Ll](?![-\\w\u2013\xad])', u'\\g<num_1> g-mal', u'grammal r\xf6vid\xedt\xe9se g-mal (AkH. 286.)', False], [u'(?u) A vitamin(?P<w_1>\\w*)', u' A-vitamin\\g<w_1>', u'K\xf6t\u0151jeles n\xe9v.', False], [u'(?u)(?<![-\\w\u2013.,\xad])([B-Z]) vitamin(?P<w_1>\\w*)(?![-\\w\u2013\xad])', u'\\1-vitamin\\g<w_1>', u'K\xf6t\u0151jeles n\xe9v.', False], [u'(?u)(?<![-\\w\u2013.,\xad])([A-Z])-(vitamin)(\\w+)(?![-\\w\u2013\xad])', u'\\1-vitamin-\\2', u'K\xe9t k\xf6t\u0151jellel \xedrt alak.', u'morph(LOCALE,m.group(2)+m.group(3), "pa:")'], [u'(?u)(?<![-\\w\u2013.,\xad])([A-Z])-(vitamin) *(hi\xe1ny)(?![-\\w\u2013\xad])', u'\\1-\\2-\\3', u'K\xe9t k\xf6t\u0151jellel \xedrt alak.', False], [u'(?iu)\\b[Nn][Yy][\xcd\xed][Ll][Tt] [Ss][Zz][\xcd\xed][Vv][\u0170\u0171](?P<w_1>\\w*)', u'ny\xedltsz\xedv\u0171\\g<w_1>', u'Egybe\xedr\xe1s.', False], [u'(?iu)\\b[Jj][\xd3\xf3] [Ss][Zz][\xc1\xe1][Nn][Dd][\xc9\xe9][Kk][\xda\xfa](?P<w_1>\\w*)', u'j\xf3sz\xe1nd\xe9k\xfa\\g<w_1>', u'Egybe\xedr\xe1s.', False], [u'(?iu)[Kk][\xd6\xf6][Zz][\xd6\xf6][Ss] [Ll][\xd3\xf3][Nn][Aa][Kk] [Tt][\xda\xfa][Rr][\xd3\xf3][Ss]', u'k\xf6z\xf6s l\xf3nak t\xfaros', u'Helyes kifejez\xe9s.', False], [u'(?iu)\\b[Nn][Ee][Jj][Ll][Oo][Nn] [Hh][Aa][Rr][Ii][Ss][Nn][Yy][Aa]\\b', u'nejlonharisnya', u'Egybe\xedr\xe1s.', False], [u'(?iu)\\b[Oo][Dd][Aa]-[Vv][Ii][Ss][Ss][Zz][Aa](?P<hw_1>[a-zA-ZA-Z\xd6\xf6\xdc\xfc\xd3\xf3\u0170\u0171\u0150\u0151\xda\xfa\xc9\xe9\xc1\xe1\xcd\xed\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd][a-zA-ZA-Z\xd6\xf6\xdc\xfc\xd3\xf3\u0170\u0171\u0150\u0151\xda\xfa\xc9\xe9\xc1\xe1\xcd\xed\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd]*)', u'oda-vissza \\g<hw_1>', u'K\xfcl\xf6n\xedr\xe1s.', False], [u'(?iu)\\b[Pp][Rr][Oo] [\xc9\xe9][Ss] [Kk][Oo][Nn][Tt][Rr][Aa]\\b', u'pr\xf3 \xe9s kontra', u'Helyes latin kifejez\xe9s.', False], [u'(?iu)\\b[Rr][\xc1\xe1][Kk][\xd6\xf6][Vv][Ee][Tt][Kk][Ee][Zz](?P<hw_1>[a-zA-ZA-Z\xd6\xf6\xdc\xfc\xd3\xf3\u0170\u0171\u0150\u0151\xda\xfa\xc9\xe9\xc1\xe1\xcd\xed\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd][a-zA-ZA-Z\xd6\xf6\xdc\xfc\xd3\xf3\u0170\u0171\u0150\u0151\xda\xfa\xc9\xe9\xc1\xe1\xcd\xed\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd]*)', u'r\xe1 k\xf6vetkez\\g<hw_1>', u'K\xfcl\xf6n\xedr\xe1s.', False], [u'(?iu)\\b[Tt][\xc1\xe1][Jj] [Jj][Ee][Ll][Ll][Ee][Gg][\u0170\u0171](?P<w_1>\\w*)', u't\xe1jjelleg\u0171\\g<w_1>', u'Egybe\xedr\xe1s.', False], [u'(?iu)([SsTtLlUuVv])-[Aa][Ll][Aa][Kk][\xda\xfa](?P<w_1>\\w*)', u'\\1 alak\xfa\\g<w_1>', u'K\xfcl\xf6n\xedr\xe1s.', False], [u'(?u)(\\d\\d*)-szob\xe1s(?P<w_1>\\w*)', u'\\1 szob\xe1s\\g<w_1>', u'K\xfcl\xf6n\xedr\xe1s.', False], [u'(?u)(\\d\\d*)-r\xe9szes(?P<w_1>\\w*)', u'\\1 r\xe9szes\\g<w_1>', u'K\xfcl\xf6n\xedr\xe1s.', False], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<event_1>(Advent|H\xfasv\xe9t|Kar\xe1csony|Mindenszentek|P\xfcnk\xf6sd|(Any\xe1k|Ap\xe1k|Halottak|N\u0151k) [Nn]apj)(?P<abc_1>[a-z\xf6\xfc\xf3\u0171\u0151\xfa\xe9\xe1\xed])*)(?![-\\w\u2013\xad])', u'= m.group("event_1").lower()', u'Kisbet\u0171s kifejez\xe9s, ha nem c\xedm. \\n http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/A_kis_\xe9s_a_nagy_kezd\u0151bet\u0171k#145.', u'wordmin(s[:m.start()],1) and word(s[m.end():],1) == word(s[m.end():],1).lower()'], [u'(?u)foci ([Ev])[bB](?P<kw_1>([-][a-zA-Z\xf6\xfc\xf3\u0171\u0151\xfa\xe9\xe1\xed\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd][a-zA-Z\xf6\xfc\xf3\u0171\u0151\xfa\xe9\xe1\xed\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd]*)?)', u'foci-\\1b\\g<kw_1>', u'K\xf6t\u0151jeles kifejez\xe9s.', False], [u'(?u)^K\xe9ts\xe9g k\xedv\xfcl', u'K\xe9ts\xe9gk\xedv\xfcl', u'Egybe\xedr\xe1s.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Aa][Ll][Ii][Gg] [Aa][Ll][Ii][Gg](?![-\\w\u2013\xad])', u'alig-alig', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Kk][Ii] [Kk][Ii](?![-\\w\u2013\xad])', u'ki-ki', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ii][Ss] [Ii][Ss](?![-\\w\u2013\xad])', u'is-is', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Kk][Ii][Nn][Ee][Kk] [Kk][Ii][Nn][Ee][Kk](?![-\\w\u2013\xad])', u'kinek-kinek', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Kk][\xd6\xf6][Rr][Bb][Ee] [Kk][\xd6\xf6][Rr][Bb][Ee](?![-\\w\u2013\xad])', u'k\xf6rbe-k\xf6rbe', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Kk][\xd6\xf6][Zz][Bb][Ee] [Kk][\xd6\xf6][Zz][Bb][Ee](?![-\\w\u2013\xad])', u'k\xf6zbe-k\xf6zbe', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Kk][\xdc\xfc][Ll][\xd6\xf6][Nn] [Kk][\xdc\xfc][Ll][\xd6\xf6][Nn](?![-\\w\u2013\xad])', u'k\xfcl\xf6n-k\xfcl\xf6n', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Mm][\xc1\xe1][Rr] [Mm][\xc1\xe1][Rr](?![-\\w\u2013\xad])', u'm\xe1r-m\xe1r', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Mm][\xc1\xe1][Ss] [Mm][\xc1\xe1][Ss](?![-\\w\u2013\xad])', u'm\xe1s-m\xe1s', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Mm][Ee][Ss][Ss][Zz][Ee] [Mm][Ee][Ss][Ss][Zz][Ee](?![-\\w\u2013\xad])', u'messze-messze', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Nn][Aa][Gg][Yy][Oo][Nn] [Nn][Aa][Gg][Yy][Oo][Nn](?![-\\w\u2013\xad])', u'nagyon-nagyon', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Nn][\xc9\xe9][Hh][Aa] [Nn][\xc9\xe9][Hh][Aa](?![-\\w\u2013\xad])', u'n\xe9ha-n\xe9ha', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Oo][Ll][Yy][Kk][Oo][Rr] [Oo][Ll][Yy][Kk][Oo][Rr](?![-\\w\u2013\xad])', u'olykor-olykor', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Tt][\xda\xfa][Ll] [Tt][\xda\xfa][Ll](?![-\\w\u2013\xad])', u't\xfal-t\xfal', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ss][Oo][Kk] [Ss][Oo][Kk](?![-\\w\u2013\xad])', u'sok-sok', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[\xda\xfa][Gg][Yy] [\xda\xfa][Gg][Yy](?![-\\w\u2013\xad])', u'\xfagy-\xfagy', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Cc][Ss][Ii][Pp] [Cc][Ss][Uu][Pp](?![-\\w\u2013\xad])', u'csip-csup', u'K\xf6t\u0151jeles ikersz\xf3. (AkH. 103.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[\xc9\xe9][Hh][Ee][Nn] [Ss][Zz][Oo][Mm][Jj][Aa][Nn](?![-\\w\u2013\xad])', u'\xe9hen-szomjan', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ii][Nn][Gg][\xd3\xf3] [Bb][Ii][Nn][Gg][\xd3\xf3](?![-\\w\u2013\xad])', u'ing\xf3-bing\xf3', u'K\xf6t\u0151jeles ikersz\xf3. (AkH. 103.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ss][Ee][Bb][Bb][Ee][Ll] [Ll][Oo][Bb][Bb][Aa][Ll](?![-\\w\u2013\xad])', u'sebbel-lobbal', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ss][Zz][Ee][Gg][Rr][\u0150\u0151][Ll] [Vv][\xc9\xe9][Gg][Rr][\u0150\u0151][Ll](?![-\\w\u2013\xad])', u'szegr\u0151l-v\xe9gr\u0151l', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ss][Zz][\xc9\xe9][Ll][Tt][\xc9\xe9][Bb][Ee][Nn] [Hh][Oo][Ss][Ss][Zz][\xc1\xe1][Bb][Aa][Nn](?![-\\w\u2013\xad])', u'sz\xe9lt\xe9ben-hossz\xe1ban', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ss][Zz][\u0150\u0151][Rr][\xd6\xf6][Ss][Tt][\xdc\xfc][Ll] [Bb][\u0150\u0151][Rr][\xd6\xf6][Ss][Tt][\xdc\xfc][Ll](?![-\\w\u2013\xad])', u'sz\u0151r\xf6st\xfcl-b\u0151r\xf6st\xfcl', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ss][Zz][\u0150\u0151][Rr][\xc9\xe9][Nn] [Ss][Zz][\xc1\xe1][Ll][\xc1\xe1][Nn](?![-\\w\u2013\xad])', u'sz\u0151r\xe9n-sz\xe1l\xe1n', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Tt][\xc9\xe9][Ll][Ee][Nn] [Nn][Yy][\xc1\xe1][Rr][Oo][Nn](?![-\\w\u2013\xad])', u't\xe9len-ny\xe1ron', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Tt][Ee][Ss][Tt][Ee][Ss][Tt][\u0150\u0151][Ll] [Ll][Ee][Ll][Kk][Ee][Ss][Tt][\u0150\u0151][Ll](?![-\\w\u2013\xad])', u'testest\u0151l-lelkest\u0151l', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Tt][Ee][Ss][Tt][Ee][Ss][Tt][\xdc\xfc][Ll] [Ll][Ee][Ll][Kk][Ee][Ss][Tt][\xdc\xfc][Ll](?![-\\w\u2013\xad])', u'testest\xfcl-lelkest\xfcl', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Tt][\xd6\xf6][Bb][Bb][\xc9\xe9] [Kk][Ee][Vv][\xc9\xe9][Ss][Bb][\xc9\xe9](?![-\\w\u2013\xad])', u't\xf6bb\xe9-kev\xe9sb\xe9', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Tt][\xd6\xf6][Rr][Ii][Kk] [Ss][Zz][Aa][Kk][Aa][Dd](?![-\\w\u2013\xad])', u't\xf6rik-szakad', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Tt][\u0170\u0171][Zz][\xd6\xf6][Nn] [Vv][\xcd\xed][Zz][Ee][Nn](?![-\\w\u2013\xad])', u't\u0171z\xf6n-v\xedzen', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Tt][\u0170\u0171][Zz][Zz][Ee][Ll] [Vv][Aa][Ss][Ss][Aa][Ll](?![-\\w\u2013\xad])', u't\u0171zzel-vassal', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Vv][\xc9\xe9][Gg][Ee][Ss] [Vv][\xc9\xe9][Gg][Ii][Gg](?![-\\w\u2013\xad])', u'v\xe9ges-v\xe9gig', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Tt][\xdc\xfc][Ss][Kk][\xc9\xe9][Nn] [Bb][Oo][Kk][Rr][Oo][Nn](?![-\\w\u2013\xad])', u't\xfcsk\xe9n-bokron', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Vv][\xc9\xe9][Gg][Rr][Ee] [Vv][Aa][Ll][Aa][Hh][\xc1\xe1][Rr][Aa](?![-\\w\u2013\xad])', u'v\xe9gre-valah\xe1ra', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ii][Mm][\xcd\xed][Gg][Yy] [Aa][Mm][\xda\xfa][Gg][Yy](?![-\\w\u2013\xad])', u'im\xedgy-am\xfagy', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ii][Nn][Nn][Ee][Nn] [Oo][Nn][Nn][Aa][Nn](?![-\\w\u2013\xad])', u'innen-onnan', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ii][Tt][Tt] [Oo][Tt][Tt](?![-\\w\u2013\xad])', u'itt-ott', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[\xcd\xed][Zz][Ii][Gg] [Vv][\xc9\xe9][Rr][Ii][Gg](?![-\\w\u2013\xad])', u'\xedzig-v\xe9rig', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[\xcd\xed][Zz][Zz][\xc9\xe9] [Pp][Oo][Rr][Rr][\xc1\xe1](?![-\\w\u2013\xad])', u'\xedzz\xe9-porr\xe1', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Jj][Aa][Jj][Jj][Aa][Ll] [Bb][Aa][Jj][Jj][Aa][Ll](?![-\\w\u2013\xad])', u'jajjal-bajjal', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Jj][\xd3\xf3][Bb][Aa][Nn] [Rr][Oo][Ss][Ss][Zz][Bb][Aa][Nn](?![-\\w\u2013\xad])', u'j\xf3ban-rosszban', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Jj][Oo][Bb][Bb][Rr][Aa] [Bb][Aa][Ll][Rr][Aa](?![-\\w\u2013\xad])', u'jobbra-balra', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Jj][\xd3\xf3][Ll] [Rr][Oo][Ss][Ss][Zz][Uu][Ll](?![-\\w\u2013\xad])', u'j\xf3l-rosszul', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Kk][\xc9\xe9][Kk][Rr][Ee] [Zz][\xd6\xf6][Ll][Dd][Rr][Ee](?![-\\w\u2013\xad])', u'k\xe9kre-z\xf6ldre', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Kk][\xc9\xe9][Nn][Yy][Tt][Ee][Ll][Ee][Nn] [Kk][Ee][Ll][Ll][Ee][Tt][Ll][Ee][Nn](?![-\\w\u2013\xad])', u'k\xe9nytelen-kelletlen', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Kk][\xc9\xe9][Zz][Ee][Nn] [Kk][\xd6\xf6][Zz][\xd6\xf6][Nn](?![-\\w\u2013\xad])', u'k\xe9zen-k\xf6z\xf6n', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Kk][\xd6\xf6][Rr][\xd6\xf6][Ss] [Kk][\xd6\xf6][Rr][\xdc\xfc][Ll](?![-\\w\u2013\xad])', u'k\xf6r\xf6s-k\xf6r\xfcl', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Kk][\xc9\xe9][Zz][Zz][Ee][Ll] [Ll][\xc1\xe1][Bb][Bb][Aa][Ll](?![-\\w\u2013\xad])', u'k\xe9zzel-l\xe1bbal', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Kk][Uu][Rr][Tt][\xc1\xe1][Nn] [Ff][Uu][Rr][Cc][Ss][\xc1\xe1][Nn](?![-\\w\u2013\xad])', u'kurt\xe1n-furcs\xe1n', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ll][\xc9\xe9][Pp][Tt][Ee][Nn] [Nn][Yy][Oo][Mm][Oo][Nn](?![-\\w\u2013\xad])', u'l\xe9pten-nyomon', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Mm][Ee][Nn][Ee][Tt] [Jj][\xd6\xf6][Vv][Ee][Tt](?![-\\w\u2013\xad])', u'menet-j\xf6vet', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Nn][Yy][Aa][Kk][Rr][Aa] [Ff][\u0150\u0151][Rr][Ee](?![-\\w\u2013\xad])', u'nyakra-f\u0151re', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[\xd6\xf6][Rr][\xd6\xf6][Kk][Kk][\xd6\xf6][Nn] [\xd6\xf6][Rr][\xd6\xf6][Kk][Kk][\xc9\xe9](?![-\\w\u2013\xad])', u'\xf6r\xf6kk\xf6n-\xf6r\xf6kk\xe9', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ss][\xdc\xfc][Ll][Vv][Ee] [Ff][\u0150\u0151][Vv][Ee](?![-\\w\u2013\xad])', u's\xfclve-f\u0151ve', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[\xda\xfa][Tt][Oo][Nn] [\xda\xfa][Tt][Ff][\xc9\xe9][Ll][Ee][Nn](?![-\\w\u2013\xad])', u'\xfaton-\xfatf\xe9len', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[\xdc\xfc][Gg][Gg][Yy][Ee][Ll] [Bb][Aa][Jj][Jj][Aa][Ll](?![-\\w\u2013\xad])', u'\xfcggyel-bajjal', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])([\xc1\xe1][Gg]\\w*) ([Bb][Oo][Gg]\\w*)(?![-\\w\u2013\xad])', u'\\1-\\2', u'K\xf6t\u0151jeles ikersz\xf3. (AkH. 103.)', u'stem(LOCALE,m.group(1)) == [u"\xe1g"] and stem(LOCALE,m.group(2)) == ["bog"]'], [u'(?u)(?<![-\\w\u2013.,\xad])(\xc9szaki|D\xe9li)(?:-S| [Ss])ark(?P<w_1>\\w*)(?![-\\w\u2013\xad])', u'\\1-sark\\g<w_1>', u'F\xf6ldrajzi n\xe9v.', False], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<Dir_1>\xc9szak|D\xe9l|Kelet|Nyugat|\xc9szakkelet|\xc9szaknyugat|D\xe9lkelet|D\xe9lnyugat)-(?P<cap_1>(?P<ABC_1>[A-Z\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd])(?P<abc_1>[a-z\xf6\xfc\xf3\u0171\u0151\xfa\xe9\xe1\xed])+)(?![-\\w\u2013\xad])', u'= m.group("Dir_1") + "-" + m.group("cap_1").lower()', u'Kisbet\u0171vel \xedrt f\xf6ldrajzi n\xe9v. \\n http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/A_tulajdonnevek_\xedr\xe1sa#179.', u'morph(LOCALE,m.group("cap_1"), r"po:noun_prs.*is:i_PLACE", False)'], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<dir_1>\xe9szak|d\xe9l|kelet|nyugat|\xe9szakkelet|\xe9szaknyugat|d\xe9lkelet|d\xe9lnyugat)-(?P<cap_1>(?P<ABC_1>[A-Z\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd])(?P<abc_1>[a-z\xf6\xfc\xf3\u0171\u0151\xfa\xe9\xe1\xed])+)(?![-\\w\u2013\xad])', u'= m.group("dir_1").capitalize() + "-" + m.group("cap_1")', u'Nagybet\u0171vel \xedrt f\xf6ldrajzi n\xe9v. \\n http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/A_tulajdonnevek_\xedr\xe1sa#179.', u'morph(LOCALE,m.group("cap_1"), r"po:noun_prs", False) and not morph(LOCALE,m.group("cap_1"),"is:i_PLACE", False)'], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<Dir_1>\xc9szak|D\xe9l|Kelet|Nyugat|\xc9szakkelet|\xc9szaknyugat|D\xe9lkelet|D\xe9lnyugat)-(?P<sc_1>(?P<abc_1>[a-z\xf6\xfc\xf3\u0171\u0151\xfa\xe9\xe1\xed])+)(?![-\\w\u2013\xad])', u'= m.group("Dir_1").lower() + "-" + m.group("sc_1")', u'Kisbet\u0171vel \xedrt f\xf6ldrajzi n\xe9v. \\n http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/A_tulajdonnevek_\xedr\xe1sa#179.', u'wordmin(s[:m.start()],1) and word(s[m.end():],1) and not word(s[m.end():],1) == word(s[m.end():],1).capitalize() and morph(LOCALE,m.group("sc_1"), r"po:noun_prs.*is:i_PLACE", False)'], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<Dir_1>\xc9szak|D\xe9l|Kelet|Nyugat|\xc9szakkelet|\xc9szaknyugat|D\xe9lkelet|D\xe9lnyugat) (?P<w_1>(?P<Abc_1>(?P<abc_1>[a-z\xf6\xfc\xf3\u0171\u0151\xfa\xe9\xe1\xed])|(?P<ABC_1>[A-Z\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd]))+)(?![-\\w\u2013\xad])', u'\\g<Dir_1>-\\g<w_1>', u'K\xf6t\u0151jellel \xedrt f\xf6ldrajzi n\xe9v. \\n http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/A_tulajdonnevek_\xedr\xe1sa#179.', u'morph(LOCALE,m.group("w_1"), r"po:noun_prs")'], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<cap_1>(?P<ABC_1>[A-Z\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd])(?P<abc_1>[a-z\xf6\xfc\xf3\u0171\u0151\xfa\xe9\xe1\xed])+)-(?P<prop_1>Tenger|\xd3ce\xe1n|Sziget|F\xe9lsziget|K\xf6z\xe9phegys\xe9g)(?![-\\w\u2013\xad])', u'= m.group("cap_1") + "-" + m.group("prop_1").lower()', u'Kisbet\u0171s \xedrt k\xf6zn\xe9vi tag. \\n http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/A_tulajdonnevek_\xedr\xe1sa#176.', False], [u'(?u)(?<![-\\w\u2013.,\xad])(\xc1rp\xe1d|Erzs\xe9bet|Haj\xf3gy\xe1ri|Margit|Megyeri|Pet\u0151fi|R\xe1k\xf3czi|Szabads\xe1g)-(h\xedd\\w*)(?![-\\w\u2013\xad])', u'\\1 \\2', u'K\xfcl\xf6n\xedr\xe1s. \\n http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/A_tulajdonnevek_\xedr\xe1sa#182.', False], [u'(?u)(?<![-\\w\u2013.,\xad])(Szabads\xe1g)(h\xedd\\w*)(?![-\\w\u2013\xad])', u'\\1 \\2', u'K\xfcl\xf6n\xedr\xe1s. \\n http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/A_tulajdonnevek_\xedr\xe1sa#182.', False], [u'(?u)(?<![-\\w\u2013.,\xad])(Szabads\xe1g ?)(szobo?r\\w*)(?![-\\w\u2013\xad])', u'\\1-\\2', u'K\xf6t\u0151jeles \xf6sszet\xe9tel. \\n http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/A k\xfcl\xf6n\xedr\xe1s \xe9s az egybe\xedr\xe1s#140.', False], [u'(?u)(?<![-\\w\u2013.,\xad])(Fert\u0151)-(([tT]\xf3|[tT]av)\\w*)(?![-\\w\u2013\xad])', u'= m.group(1) + " " + m.group(2).lower()', u'K\xf6t\u0151jel n\xe9lk\xfcl \xedrt f\xf6ldrajzi n\xe9v. \\n http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/A_tulajdonnevek_\xedr\xe1sa#183.', False], [u'(?u)(?<![-\\w\u2013.,\xad])(G\xf3bi|Kalah\xe1ri|Szahara)-([sS]ivatag\\w*)(?![-\\w\u2013\xad])', u'= m.group(1) + " " + m.group(2).lower()', u'K\xf6t\u0151jel n\xe9lk\xfcl \xedrt f\xf6ldrajzi n\xe9v. \\n http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/A_tulajdonnevek_\xedr\xe1sa#183.', False], [u'(?u)(?<![-\\w\u2013.,\xad])(B\xf6rzs\xf6ny|B\xfckk|M\xe1tra|Mecsek|Pilis|Zempl\xe9n|V\xe9rtes)-([Hh]egys\xe9g\\w*)(?![-\\w\u2013\xad])', u'= m.group(1) + " " + m.group(2).lower()', u'K\xf6t\u0151jel n\xe9lk\xfcl \xedrt f\xf6ldrajzi n\xe9v. \\n http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/A_tulajdonnevek_\xedr\xe1sa#183.', False], [u'(?u)(?<![-\\w\u2013.,\xad])(Duna)-(folyam\\w*)(?![-\\w\u2013\xad])', u'= m.group(1) + " " + m.group(2).lower()', u'K\xf6t\u0151jel n\xe9lk\xfcl \xedrt f\xf6ldrajzi n\xe9v. \\n http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/A_tulajdonnevek_\xedr\xe1sa#183.', False], [u'(?u)(?<![-\\w\u2013.,\xad])(Bodrog|Duna|Dr\xe1va|Ipoly|K\xf6r\xf6s|Maros|R\xe1ba|Saj\xf3|Tisza|Zala)-(([Ff]oly\xf3|[Ff]olyam)\\w*)(?![-\\w\u2013\xad])', u'= m.group(1) + " " + m.group(2).lower()', u'K\xf6t\u0151jel n\xe9lk\xfcl \xedrt f\xf6ldrajzi n\xe9v. \\n http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/A_tulajdonnevek_\xedr\xe1sa#183.', False], [u'(?u)(?<![-\\w\u2013.,\xad])Budapest (Liszt Ferenc )([Nn]emzetk\xf6zi [Rr]ep\xfcl\u0151t[e\xe9])(r\\w*)(?![-\\w\u2013\xad])', u'= m.group(1) + m.group(2).lower() + m.group(3) + "\\nferihegyi " + m.group(1) + m.group(2).lower() + m.group(3) + "\\n" + m.group(3).replace("r", "Ferihegy", 1).replace("gyrel", "ggyel").replace(u"gyr\xe9", u"ggy\xe9") + "\\nBudapest, " + m.group(1) + m.group(2).lower() + m.group(3)', u'A k\xf6zn\xe9vi tag kisbet\u0171s, a c\xedmet vessz\u0151vel tagoljuk. (AkH. 190., 247.; FNB 74.) \\n http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Az_\xedr\xe1sjelek#247.', False], [u'(?u)(?<![-\\w\u2013.,\xad])(olya\\w+) (aki\\w*|ami\\w*)(?![-\\w\u2013\xad])', u'\\1, \\2', u'Hi\xe1nyz\xf3 vessz\u0151 a tagmondatok hat\xe1r\xe1n?', u'morph(LOCALE,m.group(2), r"st:(aki|ami|amilyen)\\b")'], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<igekoto_1>[Aa][Bb][Bb][Aa]|[Aa][Gg][Yy][Oo][Nn]|[Aa][Ll][\xc1\xe1]|[\xc1\xe1][Ll][Tt][Aa][Ll]|[\xc1\xe1][Tt]|[Bb][Ee]|[Bb][Ee][Ll][Ee]|[Bb][Ee][Nn][Nn]|[Ee][Gg][Yy][Bb][Ee]|[Ee][Gg][Yy][\xdc\xfc][Tt][Tt]|[Ee][Ll]|[Ee][Ll][Ll][Ee][Nn]|[Ee][Ll][\u0150\u0151]|[Ee][Ll][\u0150\u0151][Rr][Ee]|[Ff][Ee][Ll]|[Ff][\xd6\xf6][Ll]|[Ff][\xc9\xe9][Ll][Bb][Ee]|[Ff][\xc9\xe9][Ll][Rr][Ee]|[Ff][Ee][Ll][\xdc\xfc][Ll]|[Ff][\xd6\xf6][Ll][\xdc\xfc][Ll]|[Ff][Ee][Nn][Nn]|[Ff][\xd6\xf6][Nn][Nn]|[Hh][\xc1\xe1][Tt][Rr][Aa]|[Hh][Aa][Zz][Aa]|[Hh][Ee][Ll][Yy][Rr][Ee]|[Hh][Oo][Zz][Zz][\xc1\xe1]|[Ii][Dd][Ee]|[Jj][\xd3\xf3][Vv][\xc1\xe1]|[Kk][Ee][Rr][Ee][Ss][Zz][Tt][\xdc\xfc][Ll]|[Kk][Ee][Tt][Tt][\xc9\xe9]|[Kk][Ii]|[Kk][\xd6\xf6][Ll][Cc][Ss][\xd6\xf6][Nn]|[Kk][\xd6\xf6][Rr][Bb][Ee]|[Kk][\xd6\xf6][Rr][\xdc\xfc][Ll]|[Kk][\xd6\xf6][Zz][Bb][Ee]|[Kk][\xd6\xf6][Zz][Rr][Ee]|[Kk][\xdc\xfc][Ll][\xd6\xf6][Nn]|[Ll][Ee]|[Mm][Ee][Gg]|[Mm][Ee][Ll][Ll][\xc9\xe9]|[Nn][Ee][Kk][Ii]|[Oo][Dd][Aa]|[\xd6\xf6][Ss][Ss][Zz][Ee]|[Rr][\xc1\xe1]|[Rr][Aa][Jj][Tt][Aa]|[Ss][Zz][\xc9\xe9][Jj][Jj][Ee][Ll]|[Ss][Zz][Ee][Mm][Bb][Ee]|[Ss][Zz][Ee][Rr][Tt][Ee]|[Ss][Zz][\xc9\xe9][Tt]|[Tt][Ee][Ll][Ee]|[Tt][Oo][Vv][Aa]|[Tt][Oo][Vv][\xc1\xe1][Bb][Bb]|[Tt][\xda\xfa][Ll]|[\xda\xfa][Jj][Jj][\xc1\xe1]|[\xda\xfa][Jj][Rr][Aa]|[Uu][Tt][\xc1\xe1][Nn][Aa]|[Vv][\xc9\xe9][Gg][Bb][Ee]|[Vv][\xc9\xe9][Gg][Ii][Gg]|[Vv][Ii][Ss][Ss][Zz][Aa])(?P<segedige_1>([Aa][Kk][Aa][Rr]|[Bb][\xcd\xed][Rr]|[Ff][Oo][Gg]|[Ll][Ee][Gg][Yy]|[Ll][Ee][Hh][Ee][Tt]|[Ll][Ee][Nn][Nn]|[Ll][Ee][Ss][Zz]|[Ll][Ee][Tt][Tt]|[Ss][Zz][Aa][Bb][Aa][Dd]|[Ss][Zz][Ee][Rr][Ee][Tt]|[Tt][Aa][Ll][\xc1\xe1][Ll]|[Tt][Uu][Dd]|[Vv][Aa][Nn]|[Vv][Oo][Ll])\\w*)(?P<szavak_1>( \\w+){0,}) (?P<igenev_1>(\\w+[Nn][Ii]))(?![-\\w\u2013\xad])', u'\\g<igekoto_1> \\g<segedige_1>\\g<szavak_1> \\g<igenev_1>', u'Az igek\xf6t\u0151t nem \xedrjuk egybe a seg\xe9dig\xe9vel.', u'morph(LOCALE,m.group("igenev_1"), "INFINITIVE") and morph(LOCALE,m.group("igekoto_1")+m.group("segedige_1"), r"is:[/\\w]*DEF|ds:tt")'], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<igekoto_1>[Aa][Bb][Bb][Aa]|[Aa][Gg][Yy][Oo][Nn]|[Aa][Ll][\xc1\xe1]|[\xc1\xe1][Ll][Tt][Aa][Ll]|[\xc1\xe1][Tt]|[Bb][Ee]|[Bb][Ee][Ll][Ee]|[Bb][Ee][Nn][Nn]|[Ee][Gg][Yy][Bb][Ee]|[Ee][Gg][Yy][\xdc\xfc][Tt][Tt]|[Ee][Ll]|[Ee][Ll][Ll][Ee][Nn]|[Ee][Ll][\u0150\u0151]|[Ee][Ll][\u0150\u0151][Rr][Ee]|[Ff][Ee][Ll]|[Ff][\xd6\xf6][Ll]|[Ff][\xc9\xe9][Ll][Bb][Ee]|[Ff][\xc9\xe9][Ll][Rr][Ee]|[Ff][Ee][Ll][\xdc\xfc][Ll]|[Ff][\xd6\xf6][Ll][\xdc\xfc][Ll]|[Ff][Ee][Nn][Nn]|[Ff][\xd6\xf6][Nn][Nn]|[Hh][\xc1\xe1][Tt][Rr][Aa]|[Hh][Aa][Zz][Aa]|[Hh][Ee][Ll][Yy][Rr][Ee]|[Hh][Oo][Zz][Zz][\xc1\xe1]|[Ii][Dd][Ee]|[Jj][\xd3\xf3][Vv][\xc1\xe1]|[Kk][Ee][Rr][Ee][Ss][Zz][Tt][\xdc\xfc][Ll]|[Kk][Ee][Tt][Tt][\xc9\xe9]|[Kk][Ii]|[Kk][\xd6\xf6][Ll][Cc][Ss][\xd6\xf6][Nn]|[Kk][\xd6\xf6][Rr][Bb][Ee]|[Kk][\xd6\xf6][Rr][\xdc\xfc][Ll]|[Kk][\xd6\xf6][Zz][Bb][Ee]|[Kk][\xd6\xf6][Zz][Rr][Ee]|[Kk][\xdc\xfc][Ll][\xd6\xf6][Nn]|[Ll][Ee]|[Mm][Ee][Gg]|[Mm][Ee][Ll][Ll][\xc9\xe9]|[Nn][Ee][Kk][Ii]|[Oo][Dd][Aa]|[\xd6\xf6][Ss][Ss][Zz][Ee]|[Rr][\xc1\xe1]|[Rr][Aa][Jj][Tt][Aa]|[Ss][Zz][\xc9\xe9][Jj][Jj][Ee][Ll]|[Ss][Zz][Ee][Mm][Bb][Ee]|[Ss][Zz][Ee][Rr][Tt][Ee]|[Ss][Zz][\xc9\xe9][Tt]|[Tt][Ee][Ll][Ee]|[Tt][Oo][Vv][Aa]|[Tt][Oo][Vv][\xc1\xe1][Bb][Bb]|[Tt][\xda\xfa][Ll]|[\xda\xfa][Jj][Jj][\xc1\xe1]|[\xda\xfa][Jj][Rr][Aa]|[Uu][Tt][\xc1\xe1][Nn][Aa]|[Vv][\xc9\xe9][Gg][Bb][Ee]|[Vv][\xc9\xe9][Gg][Ii][Gg]|[Vv][Ii][Ss][Ss][Zz][Aa])(?P<letige_1>([Ll][Ee][Gg][Yy]|[Ll][Ee][Hh][Ee][Tt]|[Ll][Ee][Nn][Nn]|[Ll][Ee][Ss][Zz]|[Ll][Ee][Tt][Tt]|[Vv][Aa][Nn]|[Vv][Oo][Ll])\\w*)(?P<szavak_1>( \\w+){0,}) (?P<igenev_1>(\\w+[Vv][EeAa]))(?![-\\w\u2013\xad])', u'\\g<igekoto_1> \\g<letige_1>\\g<szavak_1> \\g<igenev_1>', u'Az igek\xf6t\u0151 a lenni + -va/-ve szerkezetben nem a l\xe9tig\xe9hez kapcsol\xf3dik.', u'morph(LOCALE,m.group("igenev_1"), "_PART") and morph(LOCALE,m.group("igekoto_1")+m.group("letige_1"), r"is:[/\\w]*DEF|ds:tt")'], [u'(?iu)(?<![-\\w\u2013.,\xad])([Hh][Aa][Dd]|[Hh][Aa][Gg][Yy])( ([Nn][Ee] )?)(?P<W_1>\\w+)(?![-\\w\u2013\xad])', u'\\1d\\2\\g<W_1>', u'Hadd helyesen.', u'morph(LOCALE,m.group("W_1"), r"(IMPER[_\\w]*SG_1|is:[_/\\w]*DEF_PL)") or (not wordmin(s[:m.start()],1) and morph(LOCALE,m.group("W_1"), r"is:[_/\\w]*DEF_SG_[23]"))'], [u'(?iu)(?<![-\\w\u2013.,\xad])(\\w+[LlNnRrZz][Dd]) (?P<igekoto_1>[Aa][Bb][Bb][Aa]|[Aa][Gg][Yy][Oo][Nn]|[Aa][Ll][\xc1\xe1]|[\xc1\xe1][Ll][Tt][Aa][Ll]|[\xc1\xe1][Tt]|[Bb][Ee]|[Bb][Ee][Ll][Ee]|[Bb][Ee][Nn][Nn]|[Ee][Gg][Yy][Bb][Ee]|[Ee][Gg][Yy][\xdc\xfc][Tt][Tt]|[Ee][Ll]|[Ee][Ll][Ll][Ee][Nn]|[Ee][Ll][\u0150\u0151]|[Ee][Ll][\u0150\u0151][Rr][Ee]|[Ff][Ee][Ll]|[Ff][\xd6\xf6][Ll]|[Ff][\xc9\xe9][Ll][Bb][Ee]|[Ff][\xc9\xe9][Ll][Rr][Ee]|[Ff][Ee][Ll][\xdc\xfc][Ll]|[Ff][\xd6\xf6][Ll][\xdc\xfc][Ll]|[Ff][Ee][Nn][Nn]|[Ff][\xd6\xf6][Nn][Nn]|[Hh][\xc1\xe1][Tt][Rr][Aa]|[Hh][Aa][Zz][Aa]|[Hh][Ee][Ll][Yy][Rr][Ee]|[Hh][Oo][Zz][Zz][\xc1\xe1]|[Ii][Dd][Ee]|[Jj][\xd3\xf3][Vv][\xc1\xe1]|[Kk][Ee][Rr][Ee][Ss][Zz][Tt][\xdc\xfc][Ll]|[Kk][Ee][Tt][Tt][\xc9\xe9]|[Kk][Ii]|[Kk][\xd6\xf6][Ll][Cc][Ss][\xd6\xf6][Nn]|[Kk][\xd6\xf6][Rr][Bb][Ee]|[Kk][\xd6\xf6][Rr][\xdc\xfc][Ll]|[Kk][\xd6\xf6][Zz][Bb][Ee]|[Kk][\xd6\xf6][Zz][Rr][Ee]|[Kk][\xdc\xfc][Ll][\xd6\xf6][Nn]|[Ll][Ee]|[Mm][Ee][Gg]|[Mm][Ee][Ll][Ll][\xc9\xe9]|[Nn][Ee][Kk][Ii]|[Oo][Dd][Aa]|[\xd6\xf6][Ss][Ss][Zz][Ee]|[Rr][\xc1\xe1]|[Rr][Aa][Jj][Tt][Aa]|[Ss][Zz][\xc9\xe9][Jj][Jj][Ee][Ll]|[Ss][Zz][Ee][Mm][Bb][Ee]|[Ss][Zz][Ee][Rr][Tt][Ee]|[Ss][Zz][\xc9\xe9][Tt]|[Tt][Ee][Ll][Ee]|[Tt][Oo][Vv][Aa]|[Tt][Oo][Vv][\xc1\xe1][Bb][Bb]|[Tt][\xda\xfa][Ll]|[\xda\xfa][Jj][Jj][\xc1\xe1]|[\xda\xfa][Jj][Rr][Aa]|[Uu][Tt][\xc1\xe1][Nn][Aa]|[Vv][\xc9\xe9][Gg][Bb][Ee]|[Vv][\xc9\xe9][Gg][Ii][Gg]|[Vv][Ii][Ss][Ss][Zz][Aa])(?![-\\w\u2013\xad])', u'\\1d \\2', u'Felsz\xf3l\xedt\xf3 m\xf3d.', u'(not wordmin(s[:m.start()],1) or wordmin(s[:m.start()],1).lower() == "ne") and morph(LOCALE,m.group(1), "st:" + m.group(1).lower() + r"\\b") and morph(LOCALE,m.group(1)+"d", r"IMPER")'], [u'(?iu)(?<![-\\w\u2013.,\xad])[Kk][\xc9\xe9][Rr][Dd][Dd] [Ee][Ll](?![-\\w\u2013\xad])', u'k\xe9rd el', u'\u201ek\xe9r\u201d felsz\xf3l\xedt\xf3 m\xf3dja.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])([Mm][Ee][Gg][Ff][Ee])([Dd]\\w*)(?![-\\w\u2013\xad])', u'\\1d\\2', u'Megfedd helyesen.', u'morph(LOCALE,m.group(1)+m.group(2), r"st:fed\\b")'], [u'(?iu)(?<![-\\w\u2013.,\xad])([Ee][Ll][Tt][Uu][Ss])([Oo][Ll]\\w*)(?![-\\w\u2013\xad])', u'\\1s\\2', u'Eltussol helyesen (kiv\xe9ve, ha zuhanyz\xe1sr\xf3l van sz\xf3).', u'morph(LOCALE,m.group(1)+m.group(2), r"st:tusol\\b")'], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ff][\u0150\u0151][Kk][\xc9\xe9]([Pp]|[Pp][Ee][Nn])(?![-\\w\u2013\xad])', u'f\u0151k\xe9p\\1', u'Ha hat\xe1roz\xf3sz\xf3, akkor f\u0151k\xe9pp.', u'wordmin(s[:m.start()],1) != "a" and wordmin(s[:m.start()],1) != "A"'], [u'(?u)\\b0-\xe1(\\w+)', u'0-\\1', u'Hib\xe1s toldal\xe9k?', False], [u'(?u)(\\d*[14])-el\\b', u'\\1-gyel', u'Hib\xe1s toldal\xe9k?', False], [u'(?u)(\\d*2)-\u0151(\\w+)', u'\\1-\\2', u'Hib\xe1s toldal\xe9k?', False], [u'(?u)(\\d*3)-\xe1\\b', u'\\1-m\xe1', u'Hib\xe1s toldal\xe9k?', False], [u'(?u)(\\d*3)-al\\b', u'\\1-mal', u'Hib\xe1s toldal\xe9k?', False], [u'(?u)(\\d*[57])-el\\b', u'\\1-tel', u'Hib\xe1s toldal\xe9k?', False], [u'(?u)(\\d*6)-\xe1\\b', u'\\1-t\xe1', u'Hib\xe1s toldal\xe9k?', False], [u'(?u)(\\d*8)-\xe1\\b', u'\\1-c\xe1', u'Hib\xe1s toldal\xe9k?', False], [u'(?u)(\\d*9)-el\\b', u'\\1-cel', u'Hib\xe1s toldal\xe9k?', False], [u'(?u)(\\d*10)-el\\b', u'\\1-zel', u'Hib\xe1s toldal\xe9k?', False], [u'(?u)(\\d*20)-\xe1\\b', u'\\1-sz\xe1', u'Hib\xe1s toldal\xe9k?', False], [u'(?u)(\\d*30)-\xe1\\b', u'\\1-c\xe1', u'Hib\xe1s toldal\xe9k?', False], [u'(?u)(\\d*[4579]0)-el\\b', u'\\1-nel', u'Hib\xe1s toldal\xe9k?', False], [u'(?u)(\\d*[68]0)-\xe1\\b', u'\\1-n\xe1', u'Hib\xe1s toldal\xe9k?', False], [u'(?u)\\b(\\d)00-\xe1\\b', u'\\100-z\xe1', u'Hib\xe1s toldal\xe9k?', u'm.group(1) != "0"'], [u'(?u)\\b(\\d)000-el\\b', u'\\1000-rel', u'Hib\xe1s toldal\xe9k?', u'm.group(1) != "0"'], [u'(?iu)(?<![-\\w\u2013.,\xad])[Tt][\xd6\xf6][Bb][Bb], [Mm][Ii][Nn][Tt](?![-\\w\u2013\xad])', u't\xf6bb mint', u'Ha nem \xf6sszehasonl\xedt\xe1st, hanem a mondanival\xf3 er\u0151s\xedt\xe9s\xe9t szolg\xe1lja a \u201et\xf6bb mint\u201d, nem haszn\xe1lunk vessz\u0151t (AkH. 243.).', u'morph(LOCALE,word(s[m.end():],1), r"(po:noun.*ds:s_\\w*|po:adj|PRESPART_adj|po:adj_num.*(is:|An_MODE_adv))\\b") or (morph(LOCALE,word(s[m.end():],1), r"(po:adj_num|^\\d+$)") and morph(LOCALE,word(s[m.end():],2), r"(po:noun\\b.*is:|(po:adj_num|st:ezer\\b).*(is:|An_MODE_adv))")) or (re.match(r"\\d+$", word(s[m.end():],1)) and morph(LOCALE,word(s[m.end():],2), r"po:adj_num|st:ezer\\b") and morph(LOCALE,word(s[m.end():],3), r"po:noun\\b.*is:")) or re.match(r"\\d+%-", word(s[m.end():],1))'], [u'(?iu)(?<![-\\w\u2013.,\xad])(\\w+)( [Aa][Vv][Aa][Gg][Yy])(?![-\\w\u2013\xad])', u'\\1,\\2', u'Az avagy k\xf6t\u0151sz\xf3 el\xe9 vessz\u0151t tesz\xfcnk.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])(\\w+)( [Ii][Ll][Ll][Ee][Tt][Vv][Ee])(?![-\\w\u2013\xad])', u'\\1,\\2', u'Az illetve k\xf6t\u0151sz\xf3 el\xe9 vessz\u0151t tesz\xfcnk.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])(\\w+)( [Ii][Ll][Ll][.])(?![-\\w\u2013\xad])', u'\\1,\\2\\n\\1, illetve', u'Az illetve k\xf6t\u0151sz\xf3 el\xe9 vessz\u0151t tesz\xfcnk.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])(\\w+)( [Vv][Aa][Ll][Aa][Mm][Ii][Nn][Tt])(?![-\\w\u2013\xad])', u'\\1,\\2', u'A valamint k\xf6t\u0151sz\xf3 el\xe9 vessz\u0151t tesz\xfcnk.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Mm][Ee][Ll][Ll][Ee][Tt](?![-\\w\u2013\xad])', u'mellett', u'Nem ink\xe1bb mellett (vagy hib\xe1s k\xfcl\xf6n\xedr\xe1s)?', u'morph(LOCALE,wordmin(s[:m.start()],1), r"po:noun.*:NOM(?!.*[di]s:)|_noun\\s+ts:NOM$")'], [u'(?iu)(?<![-\\w\u2013.,\xad])[Kk][Ee][Ll][Ll][Ee][Tt](?![-\\w\u2013\xad])', u'kellett', u'Helyes\xedr\xe1si hiba.', u'morph(LOCALE,wordmin(s[:m.start()],1), r"INF_|_inf") or morph(LOCALE,wordmin(s[:m.start()],2), r"INF_|_inf")'], [u'(?iu)(?<![-\\w\u2013.,\xad])[Kk][Ee][Ll][Ll][Ee][Tt](?![-\\w\u2013\xad])', u'kellett', u'Helyes\xedr\xe1si hiba.', u'morph(LOCALE,word(s[m.end():],1), r"INF_|_inf") or morph(LOCALE,word(s[m.end():],2), r"INF_|_inf") or word(s[m.end():],1) == "volna"'], [u'(?iu)(?<![-\\w\u2013.,\xad])(\\w+) [Hh][Ee][Ll][Yy][Ee][Tt][Tt] ([Kk][Aa][Pp]\\w*)(?![-\\w\u2013\xad])', u'\\1 helyet \\2', u'Helyesen: helyet kap.', u'morph(LOCALE,m.group(1), r"st:(is|ism\xe9t|mellett|m\xe9g)\\b|is:INE") and morph(LOCALE,m.group(2), r"st:kap\\b")'], [u'(?iu)(?<![-\\w\u2013.,\xad])(?<=[NNn][Ee][Mm] )[Hh][Aa][Ll][Oo][Tt][Tt]([Aa][Mm]|[Uu][Nn][Kk])(?![-\\w\u2013\xad])', u'hallott\\1', u'Helyes\xedr\xe1si hiba?', False], [u'(?iu)(?<![-\\w\u2013.,\xad])([Hh][Aa][Ll])([Oo][Tt][Tt]\\w*)(?= r\xf3la\\w*)(?![-\\w\u2013\xad])', u'\\1l\\2', u'Helyes\xedr\xe1si hiba?', False], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<W_1>\\w{4,5})(?![-\\w\u2013\xad])', u'=suggest(LOCALE,m.group("W_1"))', u'Biztos, hogy helyes \xf6sszetett sz\xf3?', u'option(LOCALE,"compound") and morph(LOCALE,m.group("W_1"), "pa:")'], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<W_1>\\w{4,})(?![-\\w\u2013\xad])', u'=suggest(LOCALE,m.group("W_1"))', u'Biztos, hogy helyes \xf6sszetett sz\xf3?', u'option(LOCALE,"compound") and morph(LOCALE,m.group("W_1"), ur"(?u)pa:\\w\\w\\b")'], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<W_1>\\w{4,})(?![-\\w\u2013\xad])', u'=suggest(LOCALE,m.group("W_1"))', u'Biztos, hogy helyes \xf6sszetett sz\xf3?', u'option(LOCALE,"allcompound") and morph(LOCALE,m.group("W_1"), "pa:")'], [u'(?iu)(?<![-\\w\u2013.,\xad])[Mm][\xc9\xe9][Dd][Ii][\xc1\xe1][Kk](?![-\\w\u2013\xad])', u'm\xe9di\xe1k\\nm\xe9dia\\nh\xedrek\\nlapok\\nh\xedrcsatorn\xe1k', u'Vitatott st\xedlus\xe9rt\xe9k\u0171 alak.', u'option(LOCALE,"style")'], [u'(?iu)(?<![-\\w\u2013.,\xad])[Uu][Nn][Ss][Zz][Ii][Mm][Pp][Aa][Tt][Ii][Kk][Uu][Ss](?![-\\w\u2013\xad])', u'unszimpatikus\\nellenszenves\\nantipatikus', u'Vitatott st\xedlus\xe9rt\xe9k\u0171 alak.', u'option(LOCALE,"style")'], [u'(?u) (-\\w+)', u'\\1', u'A toldal\xe9kot sz\xf3k\xf6z n\xe9lk\xfcl \xedrjuk.', u'option(LOCALE,"wordpart") and morph(LOCALE,m.group(0), "st:-e|po:(suffix|punct)")'], [u'(?iu)(?<![-\\w\u2013.,\xad])([Aa]|[Aa][Zz]|[Ee][Gg][Yy]) (\\w+) (\\w+)(?![-\\w\u2013\xad])', u'\\1 \\2\\3', u'Hib\xe1s k\xfcl\xf6n\xedr\xe1s?', u'option(LOCALE,"wordpart") and spell(LOCALE,m.group(2) + m.group(3)) and morph(LOCALE,word(s[m.end():],1), "po:vrb") and affix(LOCALE,m.group(2), "ts:NOM$") and not morph(LOCALE,m.group(2), "ts:PLUR") and affix(LOCALE,m.group(3), "[it]s:NOM$")'], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<W_1>[-\\w]{3,}) \\1(?![-\\w\u2013\xad])', u'\\g<W_1>\\n\\g<W_1>-\\1', u'Sz\xf3ism\xe9tl\xe9s vagy hi\xe1nyz\xf3 k\xf6t\u0151jel?', u'option(LOCALE,"dup0") and (not wordmin(s[:m.start()],1) or not wordmin(s[:m.start()],1).lower() in ["a", "az", "minden"]) and word(s[m.end():],1) != u"h\xe1t\xe1n" and word(s[m.end():],1) != u"h\xe1t\xe1n." and not morph(LOCALE,word(s[m.end():],1), "po:post", False)'], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<W_1>[-\\w]{3,})(?: [-\u2013\\w\u201e\u201d]+)* \\1(?![-\\w\u2013\xad])', u'\\g<W_1>', u'T\xfalzott sz\xf3ism\xe9tl\xe9s?', u'option(LOCALE,"dup")'], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<W_1>[-\\w]{3,})[;,:]?(?: [-\u2013\\w\u201e\u201d]+[;,:]?)* \\1(?![-\\w\u2013\xad])', u'\\g<W_1>', u'T\xfalzott sz\xf3ism\xe9tl\xe9s?', u'option(LOCALE,"dup2")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\\w]{4})([-\\w]+)(?: [-\u2013\\w\u201e\u201d]+)* \\1(\\w+)(?![-\\w\u2013\xad])', u'\\1\\2', u'T\xfalzott sz\xf3ism\xe9tl\xe9s?', u'option(LOCALE,"dup3") and option(LOCALE,"dup") and morph(LOCALE,m.group(1)+m.group(2), r"(?u)st:\\w+") == morph(LOCALE,m.group(1)+m.group(3), r"(?u)st:\\w+") and not morph(LOCALE,m.group(1)+m.group(3), "pa:") and not morph(LOCALE,m.group(1)+m.group(2), "pa:")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\\w]{4})([-\\w]+)[;,:]?(?: [-\u2013\\w\u201e\u201d]+[;,:]?)* \\1(\\w+)(?![-\\w\u2013\xad])', u'\\1\\2', u'T\xfalzott sz\xf3ism\xe9tl\xe9s?', u'option(LOCALE,"dup3") and option(LOCALE,"dup2") and morph(LOCALE,m.group(1)+m.group(2), r"(?u)st:\\w+") == morph(LOCALE,m.group(1)+m.group(3), r"(?u)st:\\w+") and not morph(LOCALE,m.group(1)+m.group(3), "pa:") and not morph(LOCALE,m.group(1)+m.group(2), "pa:")'], [u'(?u)(?<![-\\w\u2013.,\xad])[-\\w]*f[fil][-\\w]*(?![-\\w\u2013\xad])', u'=m.group(0).replace("ffi",u"\ufb03").replace("ffl",u"\ufb04").replace("ff",u"\ufb00").replace("fi",u"\ufb01").replace("fl",u"\ufb02")', u'A sz\xf3 unicode-os f-ligat\xfar\xe1kkal:', u'option(LOCALE,"ligature")'], [u'(?u)(?<![-\\w\u2013.,\xad])[-\\w]*(\ufb03|\ufb04|\ufb00|\ufb01|\ufb02)[-\\w]*(?![-\\w\u2013\xad])', u'=m.group(0).replace(u"\ufb03","ffi").replace(u"\ufb04","ffl").replace(u"\ufb00","ff").replace(u"\ufb01","fi").replace(u"\ufb02","fl")', u'A sz\xf3 unicode-os f-ligat\xfar\xe1k n\xe9lk\xfcl:', u'option(LOCALE,"noligature")'], [u'(?u)(?<![-\\w\u2013.,\xad])1/2((-\\w+)?)(?![-\\w\u2013\xad])', u'\xbd\\1', u'Tipogr\xe1fiai jel:', u'option(LOCALE,"frac")'], [u'(?u)(?<![-\\w\u2013.,\xad])1/3((-\\w+)?)(?![-\\w\u2013\xad])', u'\u2153\\1', u'Tipogr\xe1fiai jel:', u'option(LOCALE,"frac")'], [u'(?u)(?<![-\\w\u2013.,\xad])1/4((-\\w+)?)(?![-\\w\u2013\xad])', u'\xbc\\1', u'Tipogr\xe1fiai jel:', u'option(LOCALE,"frac")'], [u'(?u)(?<![-\\w\u2013.,\xad])3/4((-\\w+)?)(?![-\\w\u2013\xad])', u'\xbe\\1', u'Tipogr\xe1fiai jel:', u'option(LOCALE,"frac")'], [u'(?u)(?<![-\\w\u2013.,\xad])2/3((-\\w+)?)(?![-\\w\u2013\xad])', u'\u2154\\1', u'Tipogr\xe1fiai jel:', u'option(LOCALE,"frac")'], [u'(?u)(?<![-\\w\u2013.,\xad])1/5((-\\w+)?)(?![-\\w\u2013\xad])', u'\u2155\\1', u'Tipogr\xe1fiai jel:', u'option(LOCALE,"frac")'], [u'(?u)(?<![-\\w\u2013.,\xad])1/6((-\\w+)?)(?![-\\w\u2013\xad])', u'\u2159\\1', u'Tipogr\xe1fiai jel:', u'option(LOCALE,"frac")'], [u'(?u)(?<![-\\w\u2013.,\xad])5/6((-\\w+)?)(?![-\\w\u2013\xad])', u'\u215a\\1', u'Tipogr\xe1fiai jel:', u'option(LOCALE,"frac")'], [u'(?u)(?<![-\\w\u2013.,\xad])1/8((-\\w+)?)(?![-\\w\u2013\xad])', u'\u215b\\1', u'Tipogr\xe1fiai jel:', u'option(LOCALE,"frac")'], [u'(?u)(?<![-\\w\u2013.,\xad])3/8((-\\w+)?)(?![-\\w\u2013\xad])', u'\u215c\\1', u'Tipogr\xe1fiai jel:', u'option(LOCALE,"frac")'], [u'(?u)(?<![-\\w\u2013.,\xad])5/8((-\\w+)?)(?![-\\w\u2013\xad])', u'\u215d\\1', u'Tipogr\xe1fiai jel:', u'option(LOCALE,"frac")'], [u'(?u)(?<![-\\w\u2013.,\xad])7/8((-\\w+)?)(?![-\\w\u2013\xad])', u'\u215e\\1', u'Tipogr\xe1fiai jel:', u'option(LOCALE,"frac")'], [u'(?u)(?<![-\\w\u2013.,\xad])1/(\\d{1,3})((-\\w+)?)(?![-\\w\u2013\xad])', u'= u"\u215f" + m.group(1).replace("0", u"\u2080").replace("1", u"\u2081").replace("2", u"\u2082").replace("3", u"\u2083").replace("4", u"\u2084").replace("5", u"\u2085").replace("6", u"\u2086").replace("7", u"\u2087").replace("8", u"\u2088").replace("9", u"\u2089") + m.group(2)', u'T\xf6rt tipogr\xe1fiai jelekkel:', u'option(LOCALE,"frac")'], [u'(?u)(?<![-\\w\u2013.,\xad])([2-9]|\\d{2,3})/(\\d{1,3})((-\\w+)?)(?![-\\w\u2013\xad])', u'= m.group(1).replace("0", u"\u2070").replace("1", u"\xb9").replace("2", u"\xb2").replace("3", u"\xb3").replace("4", u"\u2074").replace("5", u"\u2075").replace("6", u"\u2076").replace("7", u"\u2077").replace("8", u"\u2078").replace("9", u"\u2079") + u"\u2044" + m.group(2).replace("0", u"\u2080").replace("1", u"\u2081").replace("2", u"\u2082").replace("3", u"\u2083").replace("4", u"\u2084").replace("5", u"\u2085").replace("6", u"\u2086").replace("7", u"\u2087").replace("8", u"\u2088").replace("9", u"\u2089") + m.group(3)', u'T\xf6rt tipogr\xe1fiai jelekkel:', u'option(LOCALE,"frac")'], [u'(?u)(?<![-\\w\u2013.,\xad])[\xb5mck]?m[23](-\\w+)?(?![-\\w\u2013\xad])', u'=m.group(0).replace("2", u"\xb2").replace("3", u"\xb3")', u'Index tipogr\xe1fiai jellel:', u'option(LOCALE,"idx")'], [u'(?u)(?<![-\\w\u2013.,\xad])(Ca(CO3|SO4)|CO2|(H2|Na2)(CO3|O|SO4)|[HNO]2|HNO3|Fe2O3|KMnO4|NO2|SiO2|SO[23])(-\\w+)?(?![-\\w\u2013\xad])', u'=m.group(0).replace("2", u"\u2082").replace("3", u"\u2083").replace("4", u"\u2084")', u'Index tipogr\xe1fiai jellel.', u'option(LOCALE,"idx")'], [u'(?u)(?<![-\\w\u2013.,\xad])kedvel(?![-\\w\u2013\xad])', u'kedvvel', u'Sz\xf3t\xe9veszt\xe9s?', u'wordmin(s[:m.start()],1).lower() == u"j\xf3" or wordmin(s[:m.start()],1).lower() == "rossz"'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:,\\d+)?) (\xb0F(-\\w+)?)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "F", "C", " " + m.group(2).replace("F", "C"))', u'V\xe1lt\xe1s SI m\xe9rt\xe9kegys\xe9gre', u'option(LOCALE,"SI")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:,\\d+)?) (\u2109(-\\w+)?)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "F", "C", " \xb0C" + m.group(2)[1:])', u'V\xe1lt\xe1s SI m\xe9rt\xe9kegys\xe9gre', u'option(LOCALE,"SI")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d(?:,\\d+)?) (l\xe1b\\w*)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "ft", "cm", " " + generate(LOCALE,u"centim\xe9ter", m.group(2))[0]) + "\\n" + measurement(m.group(1), "ft", "m", " " + generate(LOCALE,u"m\xe9ter", m.group(2))[0])', u'V\xe1lt\xe1s SI m\xe9rt\xe9kegys\xe9gre', u'option(LOCALE,"SI") and stem(LOCALE,m.group(2)) == [u"l\xe1b"]'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d\\d+(?:,\\d+)?) (l\xe1b\\w*)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "ft", "m", " " + generate(LOCALE,u"m\xe9ter", m.group(2))[0])', u'V\xe1lt\xe1s SI m\xe9rt\xe9kegys\xe9gre', u'option(LOCALE,"SI") and stem(LOCALE,m.group(2)) == [u"l\xe1b"]'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:,\\d+)?) (h\xfcvelyk\\w*)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "in", "cm", " " + generate(LOCALE,u"centim\xe9ter", m.group(2))[0])', u'V\xe1lt\xe1s SI m\xe9rt\xe9kegys\xe9gre', u'option(LOCALE,"SI")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:,\\d+)?) (m\xe9rf\xf6ld\\w*)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "mi", "km", " " + generate(LOCALE,u"kilom\xe9ter", m.group(2))[0])', u'V\xe1lt\xe1s SI m\xe9rt\xe9kegys\xe9gre', u'option(LOCALE,"SI")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:,\\d+)?) (yard\\w*)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "yd", "m", " " + generate(LOCALE,u"m\xe9ter", m.group(2))[0])', u'V\xe1lt\xe1s SI m\xe9rt\xe9kegys\xe9gre', u'option(LOCALE,"SI")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:,\\d+)?) (font (s\xfaly\xfa\\w*))(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "lbm", "kg", " " + generate(LOCALE,"kilogramm", u"szomor" + m.group(3)[4:])[0])', u'V\xe1lt\xe1s SI m\xe9rt\xe9kegys\xe9gre', u'option(LOCALE,"SI")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:,\\d+)?) (gallon\\w*)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "gal", "l", " " + generate(LOCALE,"liter", m.group(2))[0])', u'V\xe1lt\xe1s SI m\xe9rt\xe9kegys\xe9gre', u'option(LOCALE,"SI")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:,\\d+)?) (pint\\w*)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "uk_pt", "dl", " " + generate(LOCALE,"deciliter", m.group(2))[0]) + "\\n" + measurement(m.group(1), "us_pt", "dl", " " + generate(LOCALE,"deciliter", m.group(2))[0])', u'V\xe1lt\xe1s SI m\xe9rt\xe9kegys\xe9gre (angol \xe9s amerikai pint)', u'option(LOCALE,"SI")'], [u'(?u)(?<![-\\w\u2013.,\xad])adat\xfat(?![-\\w\u2013\xad])', u'ada\xadt\xfat\\nadat\xad\xfat', u'Elv\xe1laszt\xe1s:', u'option(LOCALE,"hyphen")'], [u'(?u)(?<![-\\w\u2013.,\xad])felett(em|ed|e|\xfcnk|\xfck)(?![-\\w\u2013\xad])', u'fe\xadlet\xadt\\1\\nfel\xadet\xadt\\1', u'Elv\xe1laszt\xe1s:', u'option(LOCALE,"hyphen")'], [u'(?u)(?<![-\\w\u2013.,\xad])felettetek(?![-\\w\u2013\xad])', u'fe\xadlet\xadte\xadtek\\nfel\xadet\xadte\xadtek', u'Elv\xe1laszt\xe1s:', u'option(LOCALE,"hyphen")'], [u'(?u)(?<![-\\w\u2013.,\xad])f\xf6l\xfcl(?![-\\w\u2013\xad])', u'f\xf6\xadl\xfcl\\nf\xf6l\xad\xfcl', u'Elv\xe1laszt\xe1s:', u'option(LOCALE,"hyphen")'], [u'(?u)(?<![-\\w\u2013.,\xad])g\xe9pelem(?![-\\w\u2013\xad])', u'g\xe9\xadpe\xadlem\\ng\xe9p\xadelem', u'Elv\xe1laszt\xe1s:', u'option(LOCALE,"hyphen")'], [u'(?u)(?<![-\\w\u2013.,\xad])kar\xf3ra(?![-\\w\u2013\xad])', u'kar\xad\xf3ra\\nka\xadr\xf3\xadra', u'Elv\xe1laszt\xe1s:', u'option(LOCALE,"hyphen")'], [u'(?u)(?<![-\\w\u2013.,\xad])meg\xe1s(?![-\\w\u2013\xad])', u'me\xadg\xe1s\\nmeg\xad\xe1s', u'Elv\xe1laszt\xe1s:', u'option(LOCALE,"hyphen")'], [u'(?u)(?<![-\\w\u2013.,\xad])megint(?![-\\w\u2013\xad])', u'me\xadgint\\nmeg\xadint', u'Elv\xe1laszt\xe1s:', u'option(LOCALE,"hyphen")']] \ No newline at end of file
+# -*- encoding: UTF-8 -*-
+dic = [[u'(?iu)(?<![-\\w\u2013.,\xad])[Aa] [Aa](?![-\\w\u2013\xad])', u'a', u'Sz\xf3ism\xe9tl\xe9s.', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[\xc9\xe9][Ss] [\xc9\xe9][Ss](?![-\\w\u2013\xad])', u'\xe9s', u'Sz\xf3ism\xe9tl\xe9s.', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Hh][Oo][Gg][Yy][ -][Hh][Oo][Gg][Yy] [Nn][Ee][Mm](?![-\\w\u2013\xad])', u'hogyhogy nem/hogy, hogy nem', u'Hi\xe1nyz\xf3 vessz\u0151 vagy egybe\xedr\xe1s', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Hh][Oo][Gg][Yy]-[Hh][Oo][Gg][Yy](?![-\\w\u2013\xad])', u'hogyhogy', u'Egybe\xedr\xe1s.', False, 0], [u'(?u)([-\\w]+) hogy\\b(?![-])', u'\\1, hogy', u'Hi\xe1nyz\xf3 vessz\u0151?', u'word(s[m.end():],1) and morph(LOCALE,m.group(1), r"po:(vrb|noun)\\b") and not m.group(1) in [u"felt\xe9ve", "kell"]', 0], [u'(?u)(?<![-\\w\u2013.,\xad])([-\\w]+) hogy(?![-\\w\u2013\xad])', u'\\1, hogy', u'Hi\xe1nyz\xf3 vessz\u0151?', u'option(LOCALE,"comma") and not re.match(u"(felt\xe9ve|ahelyett|an\xe9lk\xfcl|aszerint|hogy)$", m.group(1))', 0], [u'(?u)(?<![-\\w\u2013.,\xad])([-\\w]+), (ahelyett|an\xe9lk\xfcl|aszerint), hogy(?![-\\w\u2013\xad])', u'\\1, \\2 hogy|\\1 \\2, hogy', u'K\xf6t\u0151sz\xf3szer\u0171 kapcsolat eset\xe9n nem \xedrunk a \u201ehogy\u201d el\xe9 vessz\u0151t. | http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Az_\xedr\xe1sjelek#243.', False, 0], [u'(?u)(?<![-\\w\u2013.,\xad])([-\\w]+), illetve, (ha|hogy)(?![-\\w\u2013\xad])', u'\\1, illetve \\2', u'K\xf6t\u0151sz\xf3szer\u0171 kapcsolat eset\xe9n nem \xedrunk az \u201eilletve\u201d ut\xe1n vessz\u0151t. | http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Az_\xedr\xe1sjelek#243.', False, 0], [u'(?u)((?<=[!?.] )|^)(?P<low_1>[a-z\xf6\xfc\xf3\u0151\xfa\xe9\xe1\u0171\xed]+)(?![-\\w\u2013\xad])', u'= m.group("low_1").capitalize()', u'Hi\xe1nyz\xf3 nagy kezd\u0151bet\u0171?', u'paralcap.search(TEXT) and not abbrev.search(TEXT)', 0], [u'(?u)((?<=[!?.] )|^)(?P<low_1>[a-z\xf6\xfc\xf3\u0151\xfa\xe9\xe1\u0171\xed]+)(?![-\\w\u2013\xad])', u'= m.group("low_1").capitalize()', u'Hi\xe1nyz\xf3 nagy kezd\u0151bet\u0171?', u'option(LOCALE,"cap") and not abbrev.search(TEXT)', 0], [u'(?u)^[-\u2014] ', u'\u2013 ', u'A gondolatjel nagyk\xf6t\u0151jel | http://hu.wikipedia.org/wiki/Nagyk\xf6t\u0151jel', u'option(LOCALE,"dash")', 0], [u'(?u) [-\u2014]([ ,;])', u' \u2013\\1', u'A gondolatjel nagyk\xf6t\u0151jel | http://hu.wikipedia.org/wiki/Nagyk\xf6t\u0151jel', u'option(LOCALE,"dash")', 0], [u'(?u)^[-\u2013](?P<word_1>[a-z\xe1\xe9\xed\xf3\xf6\u0151\xfa\xfc\u0171A-Z\xc9\xcd\xd3\xd6\u0150\xda\xdc\u0170]\\w*)', u'\u2013 \\g<word_1>', u'Gondolatjel sz\xf3k\xf6zzel a felsorol\xe1sn\xe1l | http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Az_\xedr\xe1sjelek#258.', u'option(LOCALE,"dash")', 0], [u'(?u)[[][.][.][.]]', u'[\u2026]', u'H\xe1rom pont | http://hu.wikipedia.org/wiki/H\xe1rom_pont', u'option(LOCALE,"elli")', 0], [u'(?u)[.][.][.]', u'\u2026', u'H\xe1rom pont | http://hu.wikipedia.org/wiki/H\xe1rom_pont', u'option(LOCALE,"elli")', 0], [u'(?u) +([.?!,:;)\u201d])\\b', u'\\1 ', u'Felcser\xe9lt sz\xf3k\xf6z \xe9s \xedr\xe1sjel?', False, 0], [u'(?u) +([.?!,:;)\u201d])', u'\\1', u'Sz\xf3k\xf6z n\xe9lk\xfcl tapad\xf3 \xedr\xe1sjel | http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Az_\xedr\xe1sjelek#239.', False, 0], [u'(?u)[:,;]([.?!,;:])(?P<E_1>( |$))', u'\\1\\g<E_1>', u'Felesleges \xedr\xe1sjel.', False, 0], [u'(?u)\\b[.][.](?P<E_1>( |$))', u'.\\g<E_1>|\u2026\\g<E_2>', u'Pont vagy h\xe1rom pont? | http://hu.wikipedia.org/wiki/H\xe1rom_pont', False, 0], [u'(?u)(\\w)(?P<punct_1>[?!,:;%\u2030\u2031\xb0\u201e\u201d])(?P<Abc_1>(?P<abc_1>[a-z\xf6\xfc\xf3\u0171\u0151\xfa\xe9\xe1\xed])|(?P<ABC_1>[A-Z\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd]))', u'\\1\\g<punct_1> \\g<Abc_1>', u'Hi\xe1nyz\xf3 sz\xf3k\xf6z?', False, 0], [u'(?u)(?P<abc_1>[a-z\xf6\xfc\xf3\u0171\u0151\xfa\xe9\xe1\xedA-Z\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd]+)[.](?P<ABC_1>[A-Z\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd])', u'\\g<abc_1>. \\g<ABC_1>', u'Hi\xe1nyz\xf3 sz\xf3k\xf6z?', False, 0], [u'(?u)(^|\\b|(?P<punct_1>[?!,:;%\u2030\u2031\xb0\u201e\u201d])|[.]) {2,3}(\\b|$)', u'\\1 ', u'Felesleges sz\xf3k\xf6z.', u'option(LOCALE,"spaces")', 0], [u'(?u)(^|\\b|(?P<punct_1>[?!,:;%\u2030\u2031\xb0\u201e\u201d])|[.]) {4,}(\\b|$)', u'\\1 |\\1\t', u'Sz\xf3k\xf6z\xf6k cser\xe9je egy sz\xf3k\xf6zre vagy tabul\xe1torra:', u'option(LOCALE,"spaces2")', 0], [u'(?iu)(\\d+)([Xx]| [Xx] )(\\d+(-\\w+)?)', u'\\1\xd7\\3|\\1\u202f\xb7\u202f\\3', u'Szorz\xe1sjel. | http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Az_\xedr\xe1sjelek#275.', False, 0], [u"(?iu)(?P<a_1>(?P<abc_1>[a-zA-Z\xd6\xf6\xdc\xfc\xd3\xf3\u0170\u0171\u0150\u0151\xda\xfa\xc9\xe9\xc1\xe1\xcd\xedA-Z\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd]+)+)['\xb4](?P<b_1>(?P<abc_2>[a-zA-Z\xd6\xf6\xdc\xfc\xd3\xf3\u0170\u0171\u0150\u0151\xda\xfa\xc9\xe9\xc1\xe1\xcd\xedA-Z\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd]+)*)", u'\\g<a_1>\u2019\\g<b_1>', u'Val\xf3di aposztr\xf3f. | http://hu.wikipedia.org/wiki/Aposztr\xf3f', u'option(LOCALE,"apost")', 0], [u"(?u)['\xb4](\\d\\d(-\\w+)?)", u'\u2019\\1', u'Val\xf3di aposztr\xf3f. | http://hu.wikipedia.org/wiki/Aposztr\xf3f', u'option(LOCALE,"apost")', 0], [u'(?u)[)]', u'', u'Felesleges z\xe1r\xf3jel?', u'option(LOCALE,"par") and not "(" in TEXT', 0], [u'(?iu)[\\"\u201c\u201d\u201f\u201e]((?P<abc_1>[a-zA-Z\xd6\xf6\xdc\xfc\xd3\xf3\u0170\u0171\u0150\u0151\xda\xfa\xc9\xe9\xc1\xe1\xcd\xedA-Z\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd]+)[^\\"\u201c\u201d\u201f\u201e]*)[\\"\u201c\u201f]', u'\u201e\\1\u201d', u'Id\xe9z\u0151jelek. | http://hu.wikipedia.org/wiki/Id\xe9z\u0151jel', u'option(LOCALE,"quot")', 0], [u'(?iu)[\\"\u201c\u201d\u201f]((?P<abc_1>[a-zA-Z\xd6\xf6\xdc\xfc\xd3\xf3\u0170\u0171\u0150\u0151\xda\xfa\xc9\xe9\xc1\xe1\xcd\xedA-Z\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd]+)[^\\"\u201c\u201d\u201f\u201e]*)[\\"\u201c\u201d\u201f]', u'\u201e\\1\u201d', u'Id\xe9z\u0151jelek. | http://hu.wikipedia.org/wiki/Id\xe9z\u0151jel', u'option(LOCALE,"quot")', 0], [u'(?iu),,((?P<abc_1>[a-zA-Z\xd6\xf6\xdc\xfc\xd3\xf3\u0170\u0171\u0150\u0151\xda\xfa\xc9\xe9\xc1\xe1\xcd\xedA-Z\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd]+)[^\\"\u201c\u201d\u201f\u201e_1><\']*)\'\'', u'\u201e\\1\u201d', u'Id\xe9z\u0151jelek. | http://hu.wikipedia.org/wiki/Id\xe9z\u0151jel', False, 0], [u'(?iu)>>((?P<abc_1>[a-zA-Z\xd6\xf6\xdc\xfc\xd3\xf3\u0170\u0171\u0150\u0151\xda\xfa\xc9\xe9\xc1\xe1\xcd\xedA-Z\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd]+)[^\\"\u201c\u201d\u201f\u201e_1><\']*)<<', u'\xbb\\1\xab', u'Id\xe9z\u0151jelek. | http://hu.wikipedia.org/wiki/Id\xe9z\u0151jel', False, 0], [u'(?iu)\u2018+((?P<abc_1>[a-zA-Z\xd6\xf6\xdc\xfc\xd3\xf3\u0170\u0171\u0150\u0151\xda\xfa\xc9\xe9\xc1\xe1\xcd\xedA-Z\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd]+)[^\\"\u201c\u201d\u201f\u201e\u2019]*)\u2019+', u'\u201e\\1\u201d|\xbb\\1\xab', u'Id\xe9z\u0151jelek. | http://hu.wikipedia.org/wiki/Id\xe9z\u0151jel', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])([(\u201e\xbb]) +(?![-\\w\u2013\xad])', u'\\1', u'Sz\xf3k\xf6z n\xe9lk\xfcl tapad\xf3 \xedr\xe1sjel. | http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Az_\xedr\xe1sjelek#239.', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad]) +([\xab])(?![-\\w\u2013\xad])', u'\\1', u'Sz\xf3k\xf6z n\xe9lk\xfcl tapad\xf3 \xedr\xe1sjel. | http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Az_\xedr\xe1sjelek#239.', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])(?iu)\xab((?P<abc_1>[a-zA-Z\xd6\xf6\xdc\xfc\xd3\xf3\u0170\u0171\u0150\u0151\xda\xfa\xc9\xe9\xc1\xe1\xcd\xedA-Z\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd]+)[^\\"\u201c\u201d\u201f\u201e\u2019]*)\xbb(?![-\\w\u2013\xad])', u'\xbb\\1\xab', u'Felcser\xe9lt bels\u0151 id\xe9z\u0151jelek. | http://hu.wikipedia.org/wiki/Id\xe9z\u0151jel', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])(\\d[\\d \xa0\u202f.]*)(,?(?:[-\u2013]|00?)? F[Tt](?:-\\w+)?(?: \\(|, )(?:azaz|vagyis) )([-\\w]+)( [Ff][Oo][Rr][Ii][Nn][Tt]\\w*\\)?)(?![-\\w\u2013\xad])', u'= m.group(1) + m.group(2) + calc("NUMBERTEXT", (re.sub(u"[ \xa0\u202f.]", "", m.group(1)), "hu")) + m.group(4)', u'A k\xe9t \xf6sszeg nem egyezik.', u'option(LOCALE,"money") and calc("NUMBERTEXT", ("1", "hu")) and calc("NUMBERTEXT", (re.sub(u"[ \xa0\u202f.]", "", m.group(1)), "hu")).replace(u"kett\u0151", u"k\xe9t").replace(u"ezeregysz\xe1z", u"ezersz\xe1z") != re.sub(ur"\\begy(sz\xe1z|ezer)", r"\\g<1>", m.group(3)).replace(u"ezeregysz\xe1z", u"ezersz\xe1z").replace(u"kett\u0151", u"k\xe9t")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<d2_1>\u2212?\\d{2,3})(?P<dn_1>\\d{3}(,\\w{1,4})?[%\u2030\u2031\xb0]?(-\\w+)?)(?![-\\w\u2013\xad])', u'\\g<d2_1>\xa0\\g<dn_1>', u'Nagy sz\xe1mok tagol\xe1sa. (AkH. 274.)', u'option(LOCALE,"numpart") and not option(LOCALE,"thou")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<d1_1>\u2212?\\d{1,3})(?P<d3_1>\\d{3})(?P<dn_1>\\d{3}(,\\w{1,4})?[%\u2030\u2031\xb0]?(-\\w+)?)(?![-\\w\u2013\xad])', u'\\g<d1_1>\xa0\\g<d3_1>\xa0\\g<dn_1>', u'Nagy sz\xe1mok tagol\xe1sa. (AkH. 274.)', u'option(LOCALE,"numpart") and not option(LOCALE,"thou")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<d1_1>\u2212?\\d{1,3})(?P<d3_1>\\d{3})(?P<d3_2>\\d{3})(?P<dn_1>\\d{3}(,\\w{1,4})?[%\u2030\u2031\xb0]?(-\\w+)?)(?![-\\w\u2013\xad])', u'\\g<d1_1>\xa0\\g<d3_1>\xa0\\g<d3_2>\xa0\\g<dn_1>', u'Nagy sz\xe1mok tagol\xe1sa. (AkH. 274.)', u'option(LOCALE,"numpart") and not option(LOCALE,"thou")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<d2_1>\u2212?\\d{2,3})\xa0?(?P<dn_1>\\d{3}(,\\w{1,4})?[%\u2030\u2031\xb0]?(-\\w+)?)(?![-\\w\u2013\xad])', u'\\g<d2_1>\u202f\\g<dn_1>', u'Nagy sz\xe1mok tagol\xe1sa nem t\xf6r\u0151 keskeny sz\xf3k\xf6z\xf6kkel. (AkH. 274.)', u'option(LOCALE,"numpart") and option(LOCALE,"thou")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<d1_1>\u2212?\\d{1,3})\xa0?(?P<d3_1>\\d{3})\xa0?(?P<dn_1>\\d{3}(,\\w{1,4})?[%\u2030\u2031\xb0]?(-\\w+)?)(?![-\\w\u2013\xad])', u'\\g<d1_1>\u202f\\g<d3_1>\u202f\\g<dn_1>', u'Nagy sz\xe1mok tagol\xe1sa nem t\xf6r\u0151 keskeny sz\xf3k\xf6z\xf6kkel. (AkH. 274.)', u'option(LOCALE,"numpart") and option(LOCALE,"thou")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<d1_1>\u2212?\\d{1,3})\xa0?(?P<d3_1>\\d{3})\xa0?(?P<d3_2>\\d{3})\xa0?(?P<dn_1>\\d{3}(,\\w{1,4})?[%\u2030\u2031\xb0]?(-\\w+)?)(?![-\\w\u2013\xad])', u'\\g<d1_1>\u202f\\g<d3_1>\u202f\\g<d3_2>\xa0\\g<dn_1>', u'Nagy sz\xe1mok tagol\xe1sa nem t\xf6r\u0151 keskeny sz\xf3k\xf6z\xf6kkel. (AkH. 274.)', u'option(LOCALE,"numpart") and option(LOCALE,"thou")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])-(?P<d2_1>\\d{2,3})(?P<dn_1>\\d{3}(,\\w+)?[%\u2030\u2031\xb0]?(-\\w+)?)(?![-\\w\u2013\xad])', u'\u2212\\g<d2_1>\xa0\\g<dn_1>', u'Nagy sz\xe1mok tagol\xe1sa. (AkH. 274.)', u'option(LOCALE,"numpart") and not option(LOCALE,"thou")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])-(?P<d1_1>\\d{1,3})(?P<d3_1>\\d{3})(?P<dn_1>\\d{3}(,\\w+)?[%\u2030\u2031\xb0]?(-\\w+)?)(?![-\\w\u2013\xad])', u'\u2212\\g<d1_1>\xa0\\g<d3_1>\xa0\\g<dn_1>', u'Nagy sz\xe1mok tagol\xe1sa. (AkH. 274.)', u'option(LOCALE,"numpart") and not option(LOCALE,"thou")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])-(?P<d1_1>\\d{1,3})(?P<d3_1>\\d{3})(?P<d3_2>\\d{3})(?P<dn_1>\\d{3}(,\\w+)?[%\u2030\u2031\xb0]?(-\\w+)?)(?![-\\w\u2013\xad])', u'\u2212\\g<d1_1>\xa0\\g<d3_1>\xa0\\g<d3_2>\xa0\\g<dn_1>', u'Nagy sz\xe1mok tagol\xe1sa. (AkH. 274.)', u'option(LOCALE,"numpart") and not option(LOCALE,"thou")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])-(?P<d2_1>\\d{2,3})\xa0?(?P<dn_1>\\d{3}(,\\w+)?[%\u2030\u2031\xb0]?(-\\w+)?)(?![-\\w\u2013\xad])', u'\u2212\\g<d2_1>\u202f\\g<dn_1>', u'Nagy sz\xe1mok tagol\xe1sa nem t\xf6r\u0151 keskeny sz\xf3k\xf6z\xf6kkel. (AkH. 274.)', u'option(LOCALE,"numpart") and option(LOCALE,"thou")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])-(?P<d1_1>\\d{1,3})\xa0?(?P<d3_1>\\d{3})\xa0?(?P<dn_1>\\d{3}(,\\w+)?[%\u2030\u2031\xb0]?(-\\w+)?)(?![-\\w\u2013\xad])', u'\u2212\\g<d1_1>\u202f\\g<d3_1>\u202f\\g<dn_1>', u'Nagy sz\xe1mok tagol\xe1sa nem t\xf6r\u0151 keskeny sz\xf3k\xf6z\xf6kkel. (AkH. 274.)', u'option(LOCALE,"numpart") and option(LOCALE,"thou")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])-(?P<d1_1>\\d{1,3})\xa0?(?P<d3_1>\\d{3})\xa0?(?P<d3_2>\\d{3})\xa0?(?P<dn_1>\\d{3}(,\\w+)?[%\u2030\u2031\xb0]?(-\\w+)?)(?![-\\w\u2013\xad])', u'\u2212\\g<d1_1>\u202f\\g<d3_1>\u202f\\g<d3_2>\u202f\\g<dn_1>', u'Nagy sz\xe1mok tagol\xe1sa nem t\xf6r\u0151 keskeny sz\xf3k\xf6z\xf6kkel. (AkH. 274.)', u'option(LOCALE,"numpart") and option(LOCALE,"thou")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d[\\d,]*)[ \xa0]([%\u2030\u2031\xb0](-\\w*)?)(?![-\\w\u2013\xad])', u'\\1\\2', u'Sz\xf3k\xf6z n\xe9lk\xfcl tapad\xf3 \xedr\xe1sjel. | http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Az_\xedr\xe1sjelek#275.', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d\\d*)[.](\\d\\d*)([%\u2030\u2031\xb0](-\\w*)?)(?![-\\w\u2013\xad])', u'\\1,\\2\\3', u'Tizedesvessz\u0151 a helyes \xedr\xe1sjel. | http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Egy\xe9b_tudnival\xf3k#291.', u'option(LOCALE,"comma")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])(\\d\\d*)[.](\\d)(?![-\\w\u2013\xad])', u'\\1,\\2|\\1.\\2.', u'Tizedest\xf6rt (AkH. 291.) vagy sorsz\xe1m?', u'option(LOCALE,"comma") and (not wordmin(s[:m.start()],1) or not re.match("[A-Z]", wordmin(s[:m.start()],1)))', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])((\\d\\d*[.]){2}\\d)(?![-\\w\u2013\xad])', u'\\1.', u'A sorsz\xe1mot pont k\xf6veti.', u'option(LOCALE,"comma") and not wordmin(s[:m.start()],1) or not re.match("[A-Z]", wordmin(s[:m.start()],1))', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])(\\d\\d\\d+)[.](\\d\\d)(?![-\\w\u2013\xad])', u'\\1,\\2|\\1.\\2.', u'Tizedest\xf6rt (AkH. 291.) vagy sorsz\xe1m?', u'option(LOCALE,"comma")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])-(\\d+([ \xa0]\\d\\d\\d){0,3}(,\\d+)?[%\u2030\u2031\xb0]?(-\\w+)?)(?![-\\w\u2013\xad])', u'\u2212\\1', u'M\xednuszjel kisk\xf6t\u0151jel helyett.', u'option(LOCALE,"minus")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])-(\\d+([ \xa0]\\d\\d\\d){0,3})[.](\\d+[%\u2030\u2031\xb0]?(-\\w+)?)(?![-\\w\u2013\xad])', u'\u2212\\1,\\2', u'M\xednuszjel \xe9s tizedesvessz\u0151. | http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Egy\xe9b_tudnival\xf3k#291.', u'option(LOCALE,"minus")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])(\u2212\\d+([ \xa0]\\d\\d\\d){0,3})[.](\\d+[%\u2030\u2031\xb0]?(-\\w+)?)(?![-\\w\u2013\xad])', u'\\1,\\2', u'Tizedesvessz\u0151 pont helyett. | http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Egy\xe9b_tudnival\xf3k#291.', False, 0], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:,\\d+)?)[ \xa0](\xb0(-\\w+))(?![-\\w\u2013\xad])', u'\\1\\2', u'Sz\xf3k\xf6z n\xe9lk\xfcl tapad\xf3 \xedr\xe1sjel (AkH. 239.)', False, 0], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:,\\d+)?)((\xb0C|\xb0F|\u2103|\u2109)(-\\w+)?)(?![-\\w\u2013\xad])', u'\\1\xa0\\2', u'Nem t\xf6r\u0151 sz\xf3k\xf6zzel elv\xe1lasztott m\xe9rt\xe9kegys\xe9g.', False, 0], [u'(?u)(?<![-\\w\u2013.,\xad])(([-\u2212]?\\d+(,\\d+)?[-\u2013])?[-\u2212]?\\d+(,\\d+)?)%-al(?![-\\w\u2013\xad])', u'\\1%-kal', u'Hi\xe1nyos toldal\xe9k.', False, 0], [u'(?u)(?<![-\\w\u2013.,\xad])\\b(?P<year_1>[12]\\d\\d\\d)[.] (?P<Month_1>Janu\xe1r|Febru\xe1r|M\xe1rcius|\xc1prilis|M\xe1jus|J\xfanius|J\xfalius|Augusztus|Szeptember|Okt\xf3ber|November|December)\\b(?![-\\w\u2013\xad])', u'= m.group("year_1") + ". " + m.group("Month_1").lower()', u'A h\xf3nap nev\xe9t kisbet\u0171vel \xedrjuk. (AkH. 144.)', False, 0], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<year_1>[12]\\d\\d\\d) (?P<month_1>janu\xe1r|febru\xe1r|m\xe1rcius|\xe1prilis|m\xe1jus|j\xfanius|j\xfalius|augusztus|szeptember|okt\xf3ber|november|december|jan[.]|febr[.]|m\xe1rc[.]|\xe1pr[.]|m\xe1j[.]|j\xfan[.]|j\xfal[.]|aug[.]|szept[.]|okt[.]|nov[.]|dec[.])(?P<notmonthposs_1>(|[^-\u2013ja\xe1e\xe9][a-z\xf6\xfc\xf3\u0171\u0151\xfa\xe9\xe1\xed]*))(?![-\\w\u2013\xad])', u'\\g<year_1>. \\g<month_1>\\g<notmonthposs_1>', u'Az \xe9vsz\xe1m ut\xe1n itt pontot \xedrunk. | http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Egy\xe9b_tudnival\xf3k#294.', False, 0], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<year_1>[12]\\d\\d\\d) (?P<month_1>janu\xe1r|febru\xe1r|m\xe1rcius|\xe1prilis|m\xe1jus|j\xfanius|j\xfalius|augusztus|szeptember|okt\xf3ber|november|december|jan[.]|febr[.]|m\xe1rc[.]|\xe1pr[.]|m\xe1j[.]|j\xfan[.]|j\xfal[.]|aug[.]|szept[.]|okt[.]|nov[.]|dec[.])(?P<notmonthcomp_1>[-\u2013](?P<month_2>janu\xe1r|febru\xe1r|m\xe1rcius|\xe1prilis|m\xe1jus|j\xfanius|j\xfalius|augusztus|szeptember|okt\xf3ber|november|december|jan[.]|febr[.]|m\xe1rc[.]|\xe1pr[.]|m\xe1j[.]|j\xfan[.]|j\xfal[.]|aug[.]|szept[.]|okt[.]|nov[.]|dec[.])(?P<notmonthposs_1>(|[^-\u2013ja\xe1e\xe9][a-z\xf6\xfc\xf3\u0171\u0151\xfa\xe9\xe1\xed]*)))(?![-\\w\u2013\xad])', u'\\g<year_1>. \\g<month_1>\\g<notmonthcomp_1>', u'Az \xe9vsz\xe1m ut\xe1n itt pontot \xedrunk. | http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Egy\xe9b_tudnival\xf3k#294.', False, 0], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<year_1>[12]\\d\\d\\d) \xe9vi(?![-\\w\u2013\xad])', u'\\g<year_1>. \xe9vi', u'Az \xe9vsz\xe1m ut\xe1n itt pontot \xedrunk. | http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Egy\xe9b_tudnival\xf3k#294.', False, 0], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<year_1>[12]\\d\\d\\d)[-\u2013](?P<year2_1>\\d\\d) \xe9vi(?![-\\w\u2013\xad])', u'\\g<year_1>\u2013\\g<year2_1>. \xe9vi', u'Az \xe9vsz\xe1m ut\xe1n itt pontot \xedrunk. | http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Egy\xe9b_tudnival\xf3k#294.', False, 0], [u'(?u)(?<![-\\w\u2013.,\xad])\\b(?P<year_1>[12]\\d\\d\\d)[.] (?P<nu_1>folyam\xe1n|el\u0151tti?|ut\xe1ni?|k\xf6z\xf6tti?|nyara|nyar\xe1\\w+|tele|tel\xe9\\w+|tavasza|tavasz\xe1\\w+|\u0151sze|\u0151sz\xe9\\w+)\\b(?![-\\w\u2013\xad])', u'\\g<year_1> \\g<nu_1>', u'Az \xe9vsz\xe1m ut\xe1n itt nem \xedrunk pontot. | http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Egy\xe9b_tudnival\xf3k#295.', False, 0], [u'(?u)(?<![-\\w\u2013.,\xad])\\b(?P<year_1>[12]\\d\\d\\d)[.] (?P<month_1>janu\xe1r|febru\xe1r|m\xe1rcius|\xe1prilis|m\xe1jus|j\xfanius|j\xfalius|augusztus|szeptember|okt\xf3ber|november|december|jan[.]|febr[.]|m\xe1rc[.]|\xe1pr[.]|m\xe1j[.]|j\xfan[.]|j\xfal[.]|aug[.]|szept[.]|okt[.]|nov[.]|dec[.])(?P<monthposs_1>([ja\xe1e]|\xe9\\w)\\w*)\\b(?![-\\w\u2013\xad])', u'\\g<year_1> \\g<month_1>\\g<monthposs_1>', u'Az \xe9vsz\xe1m ut\xe1n itt nem \xedrunk pontot. | http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Egy\xe9b_tudnival\xf3k#295.', False, 0], [u'(?iu)\\b(?P<month_1>[Jj][Aa][Nn][Uu][\xc1\xe1][Rr]|[Ff][Ee][Bb][Rr][Uu][\xc1\xe1][Rr]|[Mm][\xc1\xe1][Rr][Cc][Ii][Uu][Ss]|[\xc1\xe1][Pp][Rr][Ii][Ll][Ii][Ss]|[Mm][\xc1\xe1][Jj][Uu][Ss]|[Jj][\xda\xfa][Nn][Ii][Uu][Ss]|[Jj][\xda\xfa][Ll][Ii][Uu][Ss]|[Aa][Uu][Gg][Uu][Ss][Zz][Tt][Uu][Ss]|[Ss][Zz][Ee][Pp][Tt][Ee][Mm][Bb][Ee][Rr]|[Oo][Kk][Tt][\xd3\xf3][Bb][Ee][Rr]|[Nn][Oo][Vv][Ee][Mm][Bb][Ee][Rr]|[Dd][Ee][Cc][Ee][Mm][Bb][Ee][Rr]|[Jj][Aa][Nn][.]|[Ff][Ee][Bb][Rr][.]|[Mm][\xc1\xe1][Rr][Cc][.]|[\xc1\xe1][Pp][Rr][.]|[Mm][\xc1\xe1][Jj][.]|[Jj][\xda\xfa][Nn][.]|[Jj][\xda\xfa][Ll][.]|[Aa][Uu][Gg][.]|[Ss][Zz][Ee][Pp][Tt][.]|[Oo][Kk][Tt][.]|[Nn][Oo][Vv][.]|[Dd][Ee][Cc][.]) (?P<day_1>[12]\\d|3[01]|0?[1-9])[.]-(?P<w_1>\\w*)', u'\\g<month_1> \\g<day_1>-\\g<w_1>', u'A nap ut\xe1n itt nem \xedrunk pontot. | http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Egy\xe9b_tudnival\xf3k#296.', False, 0], [u'(?iu)\\b(?P<month_1>[Jj][Aa][Nn][Uu][\xc1\xe1][Rr]|[Ff][Ee][Bb][Rr][Uu][\xc1\xe1][Rr]|[Mm][\xc1\xe1][Rr][Cc][Ii][Uu][Ss]|[\xc1\xe1][Pp][Rr][Ii][Ll][Ii][Ss]|[Mm][\xc1\xe1][Jj][Uu][Ss]|[Jj][\xda\xfa][Nn][Ii][Uu][Ss]|[Jj][\xda\xfa][Ll][Ii][Uu][Ss]|[Aa][Uu][Gg][Uu][Ss][Zz][Tt][Uu][Ss]|[Ss][Zz][Ee][Pp][Tt][Ee][Mm][Bb][Ee][Rr]|[Oo][Kk][Tt][\xd3\xf3][Bb][Ee][Rr]|[Nn][Oo][Vv][Ee][Mm][Bb][Ee][Rr]|[Dd][Ee][Cc][Ee][Mm][Bb][Ee][Rr]|[Jj][Aa][Nn][.]|[Ff][Ee][Bb][Rr][.]|[Mm][\xc1\xe1][Rr][Cc][.]|[\xc1\xe1][Pp][Rr][.]|[Mm][\xc1\xe1][Jj][.]|[Jj][\xda\xfa][Nn][.]|[Jj][\xda\xfa][Ll][.]|[Aa][Uu][Gg][.]|[Ss][Zz][Ee][Pp][Tt][.]|[Oo][Kk][Tt][.]|[Nn][Oo][Vv][.]|[Dd][Ee][Cc][.]) (?P<day_1>[12]\\d|3[01]|0?[1-9])(?P<djel_1>[ ,;:?!])', u'\\g<month_1> \\g<day_1>.\\g<djel_1>', u'Ha d\xe1tum, hi\xe1nyzik a pont. | http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Egy\xe9b_tudnival\xf3k#296.', False, 0], [u'(?iu)\\b(?P<month_1>[Jj][Aa][Nn][Uu][\xc1\xe1][Rr]|[Ff][Ee][Bb][Rr][Uu][\xc1\xe1][Rr]|[Mm][\xc1\xe1][Rr][Cc][Ii][Uu][Ss]|[\xc1\xe1][Pp][Rr][Ii][Ll][Ii][Ss]|[Mm][\xc1\xe1][Jj][Uu][Ss]|[Jj][\xda\xfa][Nn][Ii][Uu][Ss]|[Jj][\xda\xfa][Ll][Ii][Uu][Ss]|[Aa][Uu][Gg][Uu][Ss][Zz][Tt][Uu][Ss]|[Ss][Zz][Ee][Pp][Tt][Ee][Mm][Bb][Ee][Rr]|[Oo][Kk][Tt][\xd3\xf3][Bb][Ee][Rr]|[Nn][Oo][Vv][Ee][Mm][Bb][Ee][Rr]|[Dd][Ee][Cc][Ee][Mm][Bb][Ee][Rr]|[Jj][Aa][Nn][.]|[Ff][Ee][Bb][Rr][.]|[Mm][\xc1\xe1][Rr][Cc][.]|[\xc1\xe1][Pp][Rr][.]|[Mm][\xc1\xe1][Jj][.]|[Jj][\xda\xfa][Nn][.]|[Jj][\xda\xfa][Ll][.]|[Aa][Uu][Gg][.]|[Ss][Zz][Ee][Pp][Tt][.]|[Oo][Kk][Tt][.]|[Nn][Oo][Vv][.]|[Dd][Ee][Cc][.]) (?P<day_1>[12]\\d|3[01]|0?[1-9]) (?P<nu_1>[\xd3\xf3][Tt][Aa]|[Ee][Ll][\u0150\u0151][Tt][Tt][Ii]?|[Uu][Tt][\xc1\xe1][Nn][Ii]?|[Kk][\xd6\xf6][Zz][\xd6\xf6][Tt][Tt][Ii]?)', u'\\g<month_1> \\g<day_1>. \\g<nu_1>', u'A nap ut\xe1n itt pontot \xedrunk. | http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Egy\xe9b_tudnival\xf3k#297.', False, 0], [u'(?iu)\\b(?P<month_1>[Jj][Aa][Nn][Uu][\xc1\xe1][Rr]|[Ff][Ee][Bb][Rr][Uu][\xc1\xe1][Rr]|[Mm][\xc1\xe1][Rr][Cc][Ii][Uu][Ss]|[\xc1\xe1][Pp][Rr][Ii][Ll][Ii][Ss]|[Mm][\xc1\xe1][Jj][Uu][Ss]|[Jj][\xda\xfa][Nn][Ii][Uu][Ss]|[Jj][\xda\xfa][Ll][Ii][Uu][Ss]|[Aa][Uu][Gg][Uu][Ss][Zz][Tt][Uu][Ss]|[Ss][Zz][Ee][Pp][Tt][Ee][Mm][Bb][Ee][Rr]|[Oo][Kk][Tt][\xd3\xf3][Bb][Ee][Rr]|[Nn][Oo][Vv][Ee][Mm][Bb][Ee][Rr]|[Dd][Ee][Cc][Ee][Mm][Bb][Ee][Rr]|[Jj][Aa][Nn][.]|[Ff][Ee][Bb][Rr][.]|[Mm][\xc1\xe1][Rr][Cc][.]|[\xc1\xe1][Pp][Rr][.]|[Mm][\xc1\xe1][Jj][.]|[Jj][\xda\xfa][Nn][.]|[Jj][\xda\xfa][Ll][.]|[Aa][Uu][Gg][.]|[Ss][Zz][Ee][Pp][Tt][.]|[Oo][Kk][Tt][.]|[Nn][Oo][Vv][.]|[Dd][Ee][Cc][.]) (?P<day_1>[12]\\d|3[01]|0?[1-9])[.] [\xc9\xe9][Ss] (?P<day_2>[12]\\d|3[01]|0?[1-9]) (?P<nu_1>[\xd3\xf3][Tt][Aa]|[Ee][Ll][\u0150\u0151][Tt][Tt][Ii]?|[Uu][Tt][\xc1\xe1][Nn][Ii]?|[Kk][\xd6\xf6][Zz][\xd6\xf6][Tt][Tt][Ii]?)', u'\\g<month_1> \\g<day_1>. \xe9s \\g<day_2>. \\g<nu_1>', u'A nap ut\xe1n itt pontot \xedrunk. | http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Egy\xe9b_tudnival\xf3k#297.', False, 0], [u'(?iu)\\b(?P<month_1>[Jj][Aa][Nn][Uu][\xc1\xe1][Rr]|[Ff][Ee][Bb][Rr][Uu][\xc1\xe1][Rr]|[Mm][\xc1\xe1][Rr][Cc][Ii][Uu][Ss]|[\xc1\xe1][Pp][Rr][Ii][Ll][Ii][Ss]|[Mm][\xc1\xe1][Jj][Uu][Ss]|[Jj][\xda\xfa][Nn][Ii][Uu][Ss]|[Jj][\xda\xfa][Ll][Ii][Uu][Ss]|[Aa][Uu][Gg][Uu][Ss][Zz][Tt][Uu][Ss]|[Ss][Zz][Ee][Pp][Tt][Ee][Mm][Bb][Ee][Rr]|[Oo][Kk][Tt][\xd3\xf3][Bb][Ee][Rr]|[Nn][Oo][Vv][Ee][Mm][Bb][Ee][Rr]|[Dd][Ee][Cc][Ee][Mm][Bb][Ee][Rr]|[Jj][Aa][Nn][.]|[Ff][Ee][Bb][Rr][.]|[Mm][\xc1\xe1][Rr][Cc][.]|[\xc1\xe1][Pp][Rr][.]|[Mm][\xc1\xe1][Jj][.]|[Jj][\xda\xfa][Nn][.]|[Jj][\xda\xfa][Ll][.]|[Aa][Uu][Gg][.]|[Ss][Zz][Ee][Pp][Tt][.]|[Oo][Kk][Tt][.]|[Nn][Oo][Vv][.]|[Dd][Ee][Cc][.]) (?P<day_1>[12]\\d|3[01]|0?[1-9]) [\xc9\xe9][Ss] (?P<day_2>[12]\\d|3[01]|0?[1-9])[.]? (?P<nu_1>[\xd3\xf3][Tt][Aa]|[Ee][Ll][\u0150\u0151][Tt][Tt][Ii]?|[Uu][Tt][\xc1\xe1][Nn][Ii]?|[Kk][\xd6\xf6][Zz][\xd6\xf6][Tt][Tt][Ii]?)', u'\\g<month_1> \\g<day_1>. \xe9s \\g<day_2>. \\g<nu_1>', u'A nap ut\xe1n itt pontot \xedrunk. | http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Egy\xe9b_tudnival\xf3k#297.', False, 0], [u'(?iu)\\b(?P<month_1>[Jj][Aa][Nn][Uu][\xc1\xe1][Rr]|[Ff][Ee][Bb][Rr][Uu][\xc1\xe1][Rr]|[Mm][\xc1\xe1][Rr][Cc][Ii][Uu][Ss]|[\xc1\xe1][Pp][Rr][Ii][Ll][Ii][Ss]|[Mm][\xc1\xe1][Jj][Uu][Ss]|[Jj][\xda\xfa][Nn][Ii][Uu][Ss]|[Jj][\xda\xfa][Ll][Ii][Uu][Ss]|[Aa][Uu][Gg][Uu][Ss][Zz][Tt][Uu][Ss]|[Ss][Zz][Ee][Pp][Tt][Ee][Mm][Bb][Ee][Rr]|[Oo][Kk][Tt][\xd3\xf3][Bb][Ee][Rr]|[Nn][Oo][Vv][Ee][Mm][Bb][Ee][Rr]|[Dd][Ee][Cc][Ee][Mm][Bb][Ee][Rr]|[Jj][Aa][Nn][.]|[Ff][Ee][Bb][Rr][.]|[Mm][\xc1\xe1][Rr][Cc][.]|[\xc1\xe1][Pp][Rr][.]|[Mm][\xc1\xe1][Jj][.]|[Jj][\xda\xfa][Nn][.]|[Jj][\xda\xfa][Ll][.]|[Aa][Uu][Gg][.]|[Ss][Zz][Ee][Pp][Tt][.]|[Oo][Kk][Tt][.]|[Nn][Oo][Vv][.]|[Dd][Ee][Cc][.]) (?P<day_1>[12]\\d|3[01]|0?[1-9])[-\u2013](?P<day_2>[12]\\d|3[01]|0?[1-9]) (?P<nu_1>[\xd3\xf3][Tt][Aa]|[Ee][Ll][\u0150\u0151][Tt][Tt][Ii]?|[Uu][Tt][\xc1\xe1][Nn][Ii]?|[Kk][\xd6\xf6][Zz][\xd6\xf6][Tt][Tt][Ii]?)', u'\\g<month_1> \\g<day_1>\u2013\\g<day_2>. \\g<nu_1>', u'A nap ut\xe1n itt pontot \xedrunk. | http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Egy\xe9b_tudnival\xf3k#297.', False, 0], [u'(?iu)\\b(?P<month_1>[Jj][Aa][Nn][Uu][\xc1\xe1][Rr]|[Ff][Ee][Bb][Rr][Uu][\xc1\xe1][Rr]|[Mm][\xc1\xe1][Rr][Cc][Ii][Uu][Ss]|[\xc1\xe1][Pp][Rr][Ii][Ll][Ii][Ss]|[Mm][\xc1\xe1][Jj][Uu][Ss]|[Jj][\xda\xfa][Nn][Ii][Uu][Ss]|[Jj][\xda\xfa][Ll][Ii][Uu][Ss]|[Aa][Uu][Gg][Uu][Ss][Zz][Tt][Uu][Ss]|[Ss][Zz][Ee][Pp][Tt][Ee][Mm][Bb][Ee][Rr]|[Oo][Kk][Tt][\xd3\xf3][Bb][Ee][Rr]|[Nn][Oo][Vv][Ee][Mm][Bb][Ee][Rr]|[Dd][Ee][Cc][Ee][Mm][Bb][Ee][Rr]|[Jj][Aa][Nn][.]|[Ff][Ee][Bb][Rr][.]|[Mm][\xc1\xe1][Rr][Cc][.]|[\xc1\xe1][Pp][Rr][.]|[Mm][\xc1\xe1][Jj][.]|[Jj][\xda\xfa][Nn][.]|[Jj][\xda\xfa][Ll][.]|[Aa][Uu][Gg][.]|[Ss][Zz][Ee][Pp][Tt][.]|[Oo][Kk][Tt][.]|[Nn][Oo][Vv][.]|[Dd][Ee][Cc][.]) (?P<day_1>[12]\\d|3[01]|0?[1-9])-(?P<day_2>[12]\\d|3[01]|0?[1-9]). (?P<nu_1>[\xd3\xf3][Tt][Aa]|[Ee][Ll][\u0150\u0151][Tt][Tt][Ii]?|[Uu][Tt][\xc1\xe1][Nn][Ii]?|[Kk][\xd6\xf6][Zz][\xd6\xf6][Tt][Tt][Ii]?)', u'\\g<month_1> \\g<day_1>\u2013\\g<day_2>. \\g<nu_1>', u'A napok k\xf6z\xe9 nagyk\xf6t\u0151jelet \xedrunk. | http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Egy\xe9b_tudnival\xf3k#297.', False, 0], [u'(?u)\\b(?P<year_1>[12]\\d\\d\\d)[.](?P<monthnum_1>0?[1-9]|1[012])[.](?P<day_1>[12]\\d|3[01]|0?[1-9])(?P<optdot_1>([.]|))(?P<text_1>[^\\s][^\\s]*)', u'\\g<year_1>. \\g<monthnum_1>.\xa0\\g<day_1>\\g<optdot_1>\\g<text_1>', u'Sz\xf3k\xf6z a d\xe1tumban. | http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Egy\xe9b_tudnival\xf3k#293.', False, 0], [u'(?iu)(?P<month_1>[Jj][Aa][Nn][Uu][\xc1\xe1][Rr]|[Ff][Ee][Bb][Rr][Uu][\xc1\xe1][Rr]|[Mm][\xc1\xe1][Rr][Cc][Ii][Uu][Ss]|[\xc1\xe1][Pp][Rr][Ii][Ll][Ii][Ss]|[Mm][\xc1\xe1][Jj][Uu][Ss]|[Jj][\xda\xfa][Nn][Ii][Uu][Ss]|[Jj][\xda\xfa][Ll][Ii][Uu][Ss]|[Aa][Uu][Gg][Uu][Ss][Zz][Tt][Uu][Ss]|[Ss][Zz][Ee][Pp][Tt][Ee][Mm][Bb][Ee][Rr]|[Oo][Kk][Tt][\xd3\xf3][Bb][Ee][Rr]|[Nn][Oo][Vv][Ee][Mm][Bb][Ee][Rr]|[Dd][Ee][Cc][Ee][Mm][Bb][Ee][Rr]|[Jj][Aa][Nn][.]|[Ff][Ee][Bb][Rr][.]|[Mm][\xc1\xe1][Rr][Cc][.]|[\xc1\xe1][Pp][Rr][.]|[Mm][\xc1\xe1][Jj][.]|[Jj][\xda\xfa][Nn][.]|[Jj][\xda\xfa][Ll][.]|[Aa][Uu][Gg][.]|[Ss][Zz][Ee][Pp][Tt][.]|[Oo][Kk][Tt][.]|[Nn][Oo][Vv][.]|[Dd][Ee][Cc][.]) 1[.]?-(?P<e_1>[Ee]|[Ii]|[Ee][Ii]\\w*|[\xc9\xe9]\\w+)\\b', u'\\g<month_1> 1-j\\g<e_1>', u'Elseje sz\xe1mjegyes \xedr\xe1sa. | http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Egy\xe9b_tudnival\xf3k#296.', False, 0], [u'(?u)\\bstb[.], stb[.]', u'stb. stb.|stb.; stb.', u'K\xe9t stb. k\xf6z\xe9 nem tesz\xfcnk vessz\u0151t.', False, 0], [u'(?u)(?<![-\\w\u2013.,\xad])(db|Ft)[.](?= (?P<abc_1>[a-z\xf6\xfc\xf3\u0171\u0151\xfa\xe9\xe1\xedA-Z\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd]+))(?![-\\w\u2013\xad])', u'\\1', u'Nem ponttal \xedrjuk ezt a r\xf6vid\xedt\xe9st.', False, 0], [u'(?u)(?<![-\\w\u2013.,\xad])(db|Ft)[.](?=[,;:])(?![-\\w\u2013\xad])', u'\\1', u'Nem ponttal \xedrjuk ezt a r\xf6vid\xedt\xe9st.', False, 0], [u'(?iu)\\b(?P<country_1>[Aa][Ll][Bb][\xc1\xe1][Nn]|[Aa][Mm][Ee][Rr][Ii][Kk][Aa][Ii]|[Aa][Nn][Gg][Oo][Ll]|[Bb][Ee][Ll][Gg][Aa]|[Bb][Oo][Ll][Gg][\xc1\xe1][Rr]|[Bb][Oo][Ss][Nn][Yy][\xc1\xe1][Kk]|[Bb][Rr][Ii][Tt]|[Cc][Ii][Pp][Rr][Uu][Ss][Ii]|[Cc][Ss][Ee][Hh]|[Dd][\xc1\xe1][Nn]|[\xc9\xe9][Ss][Zz][Tt]|[Ff][Ii][Nn][Nn]|[Ff][Rr][Aa][Nn][Cc][Ii][Aa]|[Gg][\xd6\xf6][Rr][\xd6\xf6][Gg]|[Hh][Oo][Ll][Ll][Aa][Nn][Dd]|[Hh][Oo][Rr][Vv][\xc1\xe1][Tt]|[\xcd\xed][Rr]|[Jj][Aa][Pp][\xc1\xe1][Nn]|[Kk][\xcd\xed][Nn][Aa][Ii]|[Ll][Ee][Nn][Gg][Yy][Ee][Ll]|[Ll][Ee][Tt][Tt]|[Ll][Ii][Tt][Vv][\xc1\xe1][Nn]|[Mm][Aa][Cc][Ee][Dd][\xd3\xf3][Nn]|[Mm][Aa][Gg][Yy][Aa][Rr]|[Mm][\xc1\xe1][Ll][Tt][Aa][Ii]|[Nn][\xc9\xe9][Mm][Ee][Tt]|[Nn][Oo][Rr][Vv][\xc9\xe9][Gg]|[Oo][Ll][Aa][Ss][Zz]|[Oo][Rr][Oo][Ss][Zz]|[Oo][Ss][Zz][Tt][Rr][\xc1\xe1][Kk]|[Pp][Oo][Rr][Tt][Uu][Gg][\xc1\xe1][Ll]|[Rr][Oo][Mm][\xc1\xe1][Nn]|[Ss][Pp][Aa][Nn][Yy][Oo][Ll]|[Ss][Vv][\xc1\xe1][Jj][Cc][Ii]|[Ss][Vv][\xc9\xe9][Dd]|[Ss][Zz][Ee][Rr][Bb]|[Ss][Zz][Ll][Oo][Vv][\xc1\xe1][Kk]|[Ss][Zz][Ll][Oo][Vv][\xc9\xe9][Nn]|[Tt][\xd6\xf6][Rr][\xd6\xf6][Kk]|[Uu][Kk][Rr][\xc1\xe1][Nn])-(?P<country_2>[Aa][Ll][Bb][\xc1\xe1][Nn]|[Aa][Mm][Ee][Rr][Ii][Kk][Aa][Ii]|[Aa][Nn][Gg][Oo][Ll]|[Bb][Ee][Ll][Gg][Aa]|[Bb][Oo][Ll][Gg][\xc1\xe1][Rr]|[Bb][Oo][Ss][Nn][Yy][\xc1\xe1][Kk]|[Bb][Rr][Ii][Tt]|[Cc][Ii][Pp][Rr][Uu][Ss][Ii]|[Cc][Ss][Ee][Hh]|[Dd][\xc1\xe1][Nn]|[\xc9\xe9][Ss][Zz][Tt]|[Ff][Ii][Nn][Nn]|[Ff][Rr][Aa][Nn][Cc][Ii][Aa]|[Gg][\xd6\xf6][Rr][\xd6\xf6][Gg]|[Hh][Oo][Ll][Ll][Aa][Nn][Dd]|[Hh][Oo][Rr][Vv][\xc1\xe1][Tt]|[\xcd\xed][Rr]|[Jj][Aa][Pp][\xc1\xe1][Nn]|[Kk][\xcd\xed][Nn][Aa][Ii]|[Ll][Ee][Nn][Gg][Yy][Ee][Ll]|[Ll][Ee][Tt][Tt]|[Ll][Ii][Tt][Vv][\xc1\xe1][Nn]|[Mm][Aa][Cc][Ee][Dd][\xd3\xf3][Nn]|[Mm][Aa][Gg][Yy][Aa][Rr]|[Mm][\xc1\xe1][Ll][Tt][Aa][Ii]|[Nn][\xc9\xe9][Mm][Ee][Tt]|[Nn][Oo][Rr][Vv][\xc9\xe9][Gg]|[Oo][Ll][Aa][Ss][Zz]|[Oo][Rr][Oo][Ss][Zz]|[Oo][Ss][Zz][Tt][Rr][\xc1\xe1][Kk]|[Pp][Oo][Rr][Tt][Uu][Gg][\xc1\xe1][Ll]|[Rr][Oo][Mm][\xc1\xe1][Nn]|[Ss][Pp][Aa][Nn][Yy][Oo][Ll]|[Ss][Vv][\xc1\xe1][Jj][Cc][Ii]|[Ss][Vv][\xc9\xe9][Dd]|[Ss][Zz][Ee][Rr][Bb]|[Ss][Zz][Ll][Oo][Vv][\xc1\xe1][Kk]|[Ss][Zz][Ll][Oo][Vv][\xc9\xe9][Nn]|[Tt][\xd6\xf6][Rr][\xd6\xf6][Kk]|[Uu][Kk][Rr][\xc1\xe1][Nn])\\b', u'\\g<country_1>\u2013\\g<country_2>', u'N\xe9pnevek k\xf6z\xe9 nagyk\xf6t\u0151jelet tesz\xfcnk.', False, 0], [u'(?u)\\b(?P<year2_1>(1\\d\\d[1-9]|1\\d[1-9]\\d|20\\d[1-9]|20[1-9]\\d))-(?P<year_1>[12]\\d\\d\\d)\\b ', u'\\g<year_1>\u2013\\g<year_2> ', u'\xc9vsz\xe1mok k\xf6z\xe9 nagyk\xf6t\u0151jelet tesz\xfcnk.', False, 0], [u'(?u)\\b(?P<year_1>[12]\\d\\d\\d)-(?P<year2_1>(1\\d\\d[1-9]|1\\d[1-9]\\d|20\\d[1-9]|20[1-9]\\d))\\b ', u'\\g<year_1>\u2013\\g<year_2> ', u'\xc9vsz\xe1mok k\xf6z\xe9 nagyk\xf6t\u0151jelet tesz\xfcnk.', False, 0], [u'(?u)\\b(?P<year_1>[12]\\d\\d\\d)-(\\d\\d)\\b ', u'\\g<year_1>\u2013\\2 ', u'\xc9vsz\xe1mok k\xf6z\xe9 nagyk\xf6t\u0151jelet tesz\xfcnk.', False, 0], [u'(?u)([A-Z\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd]\\w*)-(\\d+(-\\w+)?)', u'\\1\u2013\\2', u'T\xedpusn\xe9v \xe9s -sz\xe1m k\xf6z\xe9 nagyk\xf6t\u0151jelet tesz\xfcnk. | http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Az_\xedr\xe1sjelek#263.', False, 0], [u'(?u)pp[.] (\\d+)-(\\d+)[.]', u'pp. \\1\u2013\\2.', u'Oldalsz\xe1mok k\xf6z\xe9 nagyk\xf6t\u0151jelet tesz\xfcnk. | http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Az_\xedr\xe1sjelek#263.', False, 0], [u'(?u)(\\d+)-(\\d+)[.] (o[.]|oldal\\w*)', u'\\1\u2013\\2. \\3', u'Oldalsz\xe1m', False, 0], [u'(?u) (u[.]|utca|\xfat|t\xe9r) (\\d\\d*)-(\\d\\d*)[.]', u' \\1 \\2\u2013\\3.', u'Nagyk\xf6t\u0151jel a h\xe1zsz\xe1mban. | http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Egy\xe9b_tudnival\xf3k#298.', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Nn][Ee] [Jj][\xc1\xe1][Tt][Ss]([Zz][Uu][Nn][Kk]|[Zz][Aa][Tt][Oo][Kk]|[Zz][Aa][Nn][Aa][Kk])(?![-\\w\u2013\xad])', u'ne j\xe1tss\\1', u'Helyes\xedr\xe1si hiba.', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Aa\xc1\xe1] [Ll][Aa] [Cc][Aa][Rr][Tt][Ee](?![-\\w\u2013\xad])', u'\xe0 la carte', u'Helyesen \xe0 la carte.', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])([\xc1\xe1][Ll][Ll][Tt][Aa]([Ss][Ss]\\w*|[Tt]\\w*))(?![-\\w\u2013\xad])', u'\xe1lta\\2', u'\xc1ltat, hiteget \xe9rtelemben egy l-lel \xedrjuk.', u'not morph(LOCALE,m.group(1), "pa:")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[\xd6\xf6][Nn][\xc1\xe1][Ll][Ll]([Tt][Aa][Tt][\xd3\xf3\xc1\xe1]\\w*)(?![-\\w\u2013\xad])', u'\xf6n\xe1l\\1', u'Helyesen egy l-lel.', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Bb][Ee][Ll][Ss][\u0150\u0151][Ss][\xc9\xe9][Gg][Ee][Ss](?![-\\w\u2013\xad])', u'bens\u0151s\xe9ges|bels\u0151s\xe9gb\u0151l k\xe9sz\xfclt', u'Sz\xf3t\xe9veszt\xe9s vagy sz\xf3j\xe1t\xe9k?', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Dd][Ee][Hh][Oo][Gg][Yy] [Ii][Ss](?![-\\w\u2013\xad])', u'dehogyis', u'Egybe\xedr\xe1s \u201eegy\xe1ltal\xe1n nem\u201d jelent\xe9sben.', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Dd][Ee][Hh][Oo][Gg][Yy] [Nn][Ee][Mm](?![-\\w\u2013\xad])', u'dehogynem', u'Egybe\xedr\xe1s \u201ede igen\u201d jelent\xe9sben.', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Dd][Ee][Hh][Oo][Gg][Yy][Ii][Ss] [Nn][Ee][Mm](?![-\\w\u2013\xad])', u'dehogyisnem', u'Egybe\xedr\xe1s \u201ede igen\u201d jelent\xe9sben.', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ee][Kk][\xc9\xe9][Pp][Pp][Ee][Nn](?![-\\w\u2013\xad])', u'ekk\xe9ppen', u'Helyesen k\xe9t k-val.', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ee][Gg][Yy][Ee][Ll] ([Tt][\xd6\xf6][Bb][Bb]\\w*|[Kk][Ee][Vv][Ee][Ss][Ee][Bb][Bb]\\w*)(?![-\\w\u2013\xad])', u'eggyel \\1', u'1-gyel \xe9rtelemben hossz\xfa gy-vel \xedrjuk.', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ee][Gg][Yy][Ee][Nn][Ll][\u0150\u0151][Rr][Ee](?![-\\w\u2013\xad])', u'egyel\u0151re|egyform\xe1ra|d\xf6ntetlenre|egyenl\u0151 sz\xe1m\xfara|azonos m\xe9ret\u0171re', u'Helyes\xedr\xe1si (egyel\u0151re) vagy st\xedlushiba (egyform\xe1ra).', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ee][Gg][Yy][Ii]([Vv][\xc1\xe1][Ss][\xda\xfa]\\w*)(?![-\\w\u2013\xad])', u'egy\xed\\1', u'Hossz\xfa \xed-vel helyes.', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ee][Gg][Yy][Tt][\u0150\u0151][Ll]-[Ee][Gg][Yy][Ii][Gg](?![-\\w\u2013\xad])', u'egyt\u0151l egyig', u'K\xf6t\u0151jel n\xe9lk\xfcl \xedrjuk.', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ee][Ll][\u0150\u0151][Rr][Ee] [Hh][\xc1\xe1][Tt][Rr][Aa](?![-\\w\u2013\xad])', u'el\u0151re-h\xe1tra', u'K\xf6t\u0151jellel \xedrjuk.', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ee][Ll][\u0150\u0151][Rr][Ee] [Ll][\xc1\xe1][Tt][Hh][Aa][Tt][\xd3\xf3][Ll][Aa][Gg](?![-\\w\u2013\xad])', u'el\u0151rel\xe1that\xf3lag', u'Egybe\xedr\xe1s.', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ee][Mm][Aa][Ii][Ll]:(?![-\\w\u2013\xad])', u'e-mail:', u'e-mail (elektronikus lev\xe9l)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ee][Mm][Aa][Ii][Ll]-[Ll][Ee][Ll](?![-\\w\u2013\xad])', u'e-maillel', u'e-mail (elektronikus lev\xe9l)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ee]([Mm][Aa][Ii][Ll][ -]|-[Mm][Aa][Ii][Ll]-|-[Mm][Aa][Ii][Ll])([Cc][\xcd\xed][Mm]\\w*)(?![-\\w\u2013\xad])', u'e-mail \\2', u'Helyesen e-mail c\xedm.', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ee][Xx][- ](\\w+)(?![-\\w\u2013\xad])', u'ex\\1', u'Egybe\xedr\xe1s.', u'spell(LOCALE,"ex" + m.group(1))', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ff][Ii][Gg][Yy][Ee][Ll][Ee][Mm][Rr][Ee]([Mm][\xc9\xe9][Ll][Tt][\xd3\xf3]\\w*)(?![-\\w\u2013\xad])', u'figyelemre \\1', u'K\xfcl\xf6n\xedr\xe1s (kiv\xe9ve: \u201eigen figyelemrem\xe9lt\xf3\u201d).', u'wordmin(s[:m.start()],1) != "igen"', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ii][Gg][Ee][Nn] [Ff][Ii][Gg][Yy][Ee][Ll][Ee][Mm][Rr][Ee] ([Mm][\xc9\xe9][Ll][Tt][\xd3\xf3]\\w*)(?![-\\w\u2013\xad])', u'igen figyelemre\\1', u'Egybe\xedr\xe1s.', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])([\xc1\xe1][Ll][Ll][Aa][Tt]|[Cc][Ss][Ee][Pp][Pp]|[Cc][Ss][Ii][Ll][Ll][Aa][Gg]|[\xc9\xe9][Kk]|[Ee][Ll][Ll][Ii][Pp][Ss][Zz][Ii][Ss]|[Ee][Mm][Bb][Ee][Rr]|[Ff][\xc9\xe9][Ll][Gg][\xd6\xf6][Mm][Bb]|[Ff][\xc9\xe9][Ll][Kk][\xd6\xf6][Rr]|[Gg][\xc1\xe1][Zz]|[Gg][\xd6\xf6][Mm][Bb]|[Gg][\xda\xfa][Ll][Aa]|[Hh][Aa][Rr][Aa][Nn][Gg]|[Hh][\xc1\xe1][Rr][Oo][Mm][Ss][Zz][\xd6\xf6][Gg]|[Hh][Aa][Ss][\xc1\xe1][Bb]|[Hh][Aa][Tt][Ss][Zz][\xd6\xf6][Gg]|[Hh][Ee][Nn][Gg][Ee][Rr]|[Kk][Aa][Gg][Yy][Ll][\xd3\xf3]|[Kk][Ee][Rr][Ee][Ss][Zz][Tt]|[Kk][Oo][Cc][Kk][Aa]|[Kk][Oo][Rr][Oo][Nn][Gg]|[Kk][\xd6\xf6][Rr]|[Kk][\xd6\xf6][Rr][Tt][Ee]|[Kk][\xda\xfa][Pp]|[Nn][\xc9\xe9][Gg][Yy][Ss][Zz][\xd6\xf6][Gg]|[Nn][\xc9\xe9][Gg][Yy][Zz][Ee][Tt]|[Nn][Yy][Ee][Rr][Ee][Gg]|[Pp][Aa][Tt][Kk][\xd3\xf3]|[Pp][Ii][Rr][Aa][Mm][Ii][Ss]|[Pp][Ii][Ss][Kk][\xd3\xf3][Tt][Aa]|[Ss][Zz][Ii][Vv][Aa][Rr]|[Tt][Oo][Jj][\xc1\xe1][Ss]|[Tt][\xd6\xf6][Ll][Cc][Ss][\xc9\xe9][Rr]|[Tt][Rr][Aa][Pp][\xc9\xe9][Zz]|[Vv][Ee][Ss][Ee])([Ff][Oo][Rr][Mm][\xc1\xe1][Jj][\xda\xfa]|[Aa][Ll][Aa][Kk][\xda\xfa])(?![-\\w\u2013\xad])', u'\\1 \\2', u'K\xfcl\xf6n\xedr\xe1s.', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ff][\u0150\u0151]([Ii][Rr][\xc1\xe1][Nn][Yy]\\w*|[Kk][\xd6\xf6][Zz][Ll][Ee][Kk][Ee][Dd][\xc9\xe9][Ss]\\w*|[Ss][Zz][Aa][Bb][\xc1\xe1][Ll][Yy]\\w*|[Ss][Zz][Ee][Rr][Vv][Ee][Zz][\u0150\u0151]\\w*)(?![-\\w\u2013\xad])', u'f\u0151 \\1', u'A \u201ef\u0151 m\u0171\u201d-h\xf6z hasonl\xf3an k\xfcl\xf6n\xedrjuk.', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Hh][\xc1\xe1][Tt][Bb][Aa] ([Tt][\xc1\xe1][Mm][Aa][Dd][\xc1\xe1][Ss]\\w*)(?![-\\w\u2013\xad])', u'h\xe1tba\\1', u'Egybe\xedr\xe1s.', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ii][Dd][\u0150\u0151][Rr][\u0150\u0151][Ll]-[Ii][Dd][\u0150\u0151][Rr][Ee](?![-\\w\u2013\xad])', u'id\u0151r\u0151l id\u0151re', u'K\xfcl\xf6n\xedr\xe1s.', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Jj][Ii][Nn][Gg] [\xc9\xe9][Ss] [Jj][Aa][Nn][Gg](?![-\\w\u2013\xad])', u'jin \xe9s jang', u'Helyesen jin \xe9s jang.', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Kk][\u0150\u0151][Rr](([\xd6\xf6][Zz]|[\xda\xfa][Tt]|[Uu][Tt])\\w*)(?![-\\w\u2013\xad])', u'k\xf6r\\1', u'R\xf6vid \xf6-vel a k\xf6r \xf6sszet\xe9teleiben.', u'morph(LOCALE,m.group(0), ur"st:k\u0151r\\b")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ll][\xc9\xe9][Gg][Yy][Ss][Zz][\xcd\xed][Vv][Ee][Ss](?![-\\w\u2013\xad])', u'l\xe9gy sz\xedves|legy\xe9l sz\xedves', u'Legy\xe9l sz\xedves \xe9rtelemben k\xfcl\xf6n\xedrjuk.', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ll][Ee][Gg][Aa][Ll][\xc1\xe1][Bb][Bb] [Ii][Ss](?![-\\w\u2013\xad])', u'legal\xe1bbis', u'Egybe\xedr\xe1s.', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])L[Ii][Cc][Hh][Tt][Ee][Nn]([Ss][Tt][Ee][Ii][Nn]\\w*)(?![-\\w\u2013\xad])', u'Liechten\\1', u'Helyesen Liechtenstein.', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Mm][Ee][Ll][Ll][\xc9\xe9][Kk][Hh][Ee][Ll][Yy]([Ss][\xc9\xe9][Gg]\\w*)(?![-\\w\u2013\xad])', u'mell\xe9khelyi\\1', u'Helyis\xe9g, mint szoba.', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Mm][\xda\xfa]([Ll][Aa][Nn][Dd][\xd3\xf3]\\w*)(?![-\\w\u2013\xad])', u'mu\\1', u'Helyesen r\xf6vid u-val.', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Nn][Ee][Mm][Bb][Ii][Zz][Tt][Oo][Ss](?![-\\w\u2013\xad])', u'nem biztos', u'K\xfcl\xf6n\xedr\xe1s.', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Oo][Rr][Ii][Gg][Ii][Nn][\xc1\xe1][Ll][Tt](?![-\\w\u2013\xad])', u'origin\xe1l|eredeti|bontatlan', u'Ha nem t\xe1rgyesetben van, \u201et\u201d n\xe9lk\xfcl \xedrjuk.', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])([Ss][Zz][\xc9\xe9][Nn]|[Kk][\xc9\xe9][Nn]|[Mm][Aa][Nn][Gg][\xc1\xe1][Nn]|[Nn][Ii][Tt][Rr][Oo][Gg][\xc9\xe9][Nn]|[\xd3\xf3][Nn]|[Tt][Ii][Tt][\xc1\xe1][Nn]|[Tt][\xd3\xf3][Rr][Ii][Uu][Mm])([Dd][Ii][Oo][Xx][Ii][Dd]\\w*)(?![-\\w\u2013\xad])', u'\\1-\\2', u'K\xf6t\u0151jeles alak.', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])([Ss][Zz][\xc9\xe9][Nn]|[Kk][\xc9\xe9][Nn]|[Nn][Ii][Tt][Rr][Oo][Gg][\xc9\xe9][Nn])([Mm][Oo][Nn][Oo][Xx][Ii][Dd]\\w*)(?![-\\w\u2013\xad])', u'\\1-\\2', u'K\xf6t\u0151jeles alak.', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Tt][Oo][Vv][\xc1\xe1][Bb][Bb][Ii][Tt][Tt][Uu][Nn][Kk](?![-\\w\u2013\xad])', u'tov\xe1bb\xedtunk|tov\xe1bb ittunk', u'Helyes\xedr\xe1si hiba.', False, 0], [u'(?u)\\bun[.]', u'\xfan.', u'\xdagy nevezett r\xf6vid\xedt\xe9se \xfan. (AkH. 282.)', u'word(s[m.end():],1) and not re.match(u"[A-Z\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd]", word(s[m.end():],1))', 0], [u'(?iu)\\b[Vv][\xcd\xed][Zz]([Hh][Aa][Nn][Gg]\\w*)\\b', u'vissz\\1', u'Sz\xf3t\xe9veszt\xe9s?', False, 0], [u'(?u)^[aA] (?P<aword_1>[a\xe1e\xe9i\xedo\xf3\xf6\u0151u\xfa\xfc\u0171A\xc1E\xc9I\xcdO\xd3\xd6\u0150U\xda\xdc\u0170]\\w*)', u'az \\g<aword_1>', u'Hib\xe1s n\xe9vel\u0151?', u'not re.match(r"(?i)i(ii?|[vx])$|Unicode$|Unix\\w*$", m.group("aword_1")) and spell(LOCALE,m.group("aword_1"))', 0], [u'(?u)(?<!(\\d[.]|az) )\\b(?P<a_1>[aA]) (?P<aword_1>[a\xe1e\xe9i\xedo\xf3\xf6\u0151u\xfa\xfc\u0171A\xc1E\xc9I\xcdO\xd3\xd6\u0150U\xda\xdc\u0170]\\w*)', u'\\g<a_1>z \\g<aword_1>|\\g<aword_2>', u'Hib\xe1s vagy felesleges n\xe9vel\u0151?', u'wordmin(s[:m.start()],1) and not re.match(r"(?i)i(ii?|[vx])$|Unicode$|Unix\\w*$", m.group("aword_1")) and spell(LOCALE,m.group("aword_1"))', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Aa](?! 1,5\\b)(?![-\\w\u2013\xad])', u'az', u'Hib\xe1s n\xe9vel\u0151.', u'word(s[m.end():],1) and re.match(r"(1|5\\d*|[15]\\d\\d\\d)[.]?$", word(s[m.end():],1))', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Aa][Zz](?![-\\w\u2013\xad])', u'a', u'Hib\xe1s n\xe9vel\u0151?', u'not option(LOCALE,"grammar") and word(s[m.end():],2) and re.match(ur"(alfejezet|alszakasz|\xe1br|bekezd\xe9s|diagram|fejezet|k\xe9p|lap|oldal|paragrafus|szakasz|t\xe1bl\xe1zat)\\w*", word(s[m.end():],2)) and re.match(r"([02-46-9]|[1-46-9]\\d|[1-46-9]\\d\\d|[2346-9]\\d\\d\\d)[.]", word(s[m.end():],1))', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Aa][Zz](?![-\\w\u2013\xad])', u'a', u'Hib\xe1s n\xe9vel\u0151?', u'option(LOCALE,"grammar") and word(s[m.end():],1) and re.match(r"([02-46-9]|[1-46-9]\\d|[1-46-9]\\d\\d|[2346-9]\\d\\d\\d)[.]", word(s[m.end():],1))', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<num_1>\\d+|\\d+,\\d+) [Gg][Rr][.]?-[Mm][Aa][Ll](?![-\\w\u2013\xad])', u'\\g<num_1> g-mal', u'grammal r\xf6vid\xedt\xe9se g-mal (AkH. 286.)', False, 0], [u'(?u) A vitamin(?P<w_1>\\w*)', u' A-vitamin\\g<w_1>', u'K\xf6t\u0151jeles n\xe9v.', False, 0], [u'(?u)(?<![-\\w\u2013.,\xad])([B-Z]) vitamin(?P<w_1>\\w*)(?![-\\w\u2013\xad])', u'\\1-vitamin\\g<w_1>', u'K\xf6t\u0151jeles n\xe9v.', False, 0], [u'(?u)(?<![-\\w\u2013.,\xad])([A-Z])-(vitamin)(\\w+)(?![-\\w\u2013\xad])', u'\\1-vitamin-\\2', u'K\xe9t k\xf6t\u0151jellel \xedrt alak.', u'morph(LOCALE,m.group(2)+m.group(3), "pa:")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])([A-Z])-(vitamin) *(hi\xe1ny)(?![-\\w\u2013\xad])', u'\\1-\\2-\\3', u'K\xe9t k\xf6t\u0151jellel \xedrt alak.', False, 0], [u'(?iu)\\b[Nn][Yy][\xcd\xed][Ll][Tt] [Ss][Zz][\xcd\xed][Vv][\u0170\u0171](?P<w_1>\\w*)', u'ny\xedltsz\xedv\u0171\\g<w_1>', u'Egybe\xedr\xe1s.', False, 0], [u'(?iu)\\b[Jj][\xd3\xf3] [Ss][Zz][\xc1\xe1][Nn][Dd][\xc9\xe9][Kk][\xda\xfa](?P<w_1>\\w*)', u'j\xf3sz\xe1nd\xe9k\xfa\\g<w_1>', u'Egybe\xedr\xe1s.', False, 0], [u'(?iu)[Kk][\xd6\xf6][Zz][\xd6\xf6][Ss] [Ll][\xd3\xf3][Nn][Aa][Kk] [Tt][\xda\xfa][Rr][\xd3\xf3][Ss]', u'k\xf6z\xf6s l\xf3nak t\xfaros', u'Helyes kifejez\xe9s.', False, 0], [u'(?iu)\\b[Nn][Ee][Jj][Ll][Oo][Nn] [Hh][Aa][Rr][Ii][Ss][Nn][Yy][Aa]\\b', u'nejlonharisnya', u'Egybe\xedr\xe1s.', False, 0], [u'(?iu)\\b[Oo][Dd][Aa]-[Vv][Ii][Ss][Ss][Zz][Aa](?P<hw_1>[a-zA-ZA-Z\xd6\xf6\xdc\xfc\xd3\xf3\u0170\u0171\u0150\u0151\xda\xfa\xc9\xe9\xc1\xe1\xcd\xed\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd][a-zA-ZA-Z\xd6\xf6\xdc\xfc\xd3\xf3\u0170\u0171\u0150\u0151\xda\xfa\xc9\xe9\xc1\xe1\xcd\xed\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd]*)', u'oda-vissza \\g<hw_1>', u'K\xfcl\xf6n\xedr\xe1s.', False, 0], [u'(?iu)\\b[Pp][Rr][Oo] [\xc9\xe9][Ss] [Kk][Oo][Nn][Tt][Rr][Aa]\\b', u'pr\xf3 \xe9s kontra', u'Helyes latin kifejez\xe9s.', False, 0], [u'(?iu)\\b[Rr][\xc1\xe1][Kk][\xd6\xf6][Vv][Ee][Tt][Kk][Ee][Zz](?P<hw_1>[a-zA-ZA-Z\xd6\xf6\xdc\xfc\xd3\xf3\u0170\u0171\u0150\u0151\xda\xfa\xc9\xe9\xc1\xe1\xcd\xed\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd][a-zA-ZA-Z\xd6\xf6\xdc\xfc\xd3\xf3\u0170\u0171\u0150\u0151\xda\xfa\xc9\xe9\xc1\xe1\xcd\xed\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd]*)', u'r\xe1 k\xf6vetkez\\g<hw_1>', u'K\xfcl\xf6n\xedr\xe1s.', False, 0], [u'(?iu)\\b[Tt][\xc1\xe1][Jj] [Jj][Ee][Ll][Ll][Ee][Gg][\u0170\u0171](?P<w_1>\\w*)', u't\xe1jjelleg\u0171\\g<w_1>', u'Egybe\xedr\xe1s.', False, 0], [u'(?iu)([SsTtLlUuVv])-[Aa][Ll][Aa][Kk][\xda\xfa](?P<w_1>\\w*)', u'\\1 alak\xfa\\g<w_1>', u'K\xfcl\xf6n\xedr\xe1s.', False, 0], [u'(?u)(\\d\\d*)-szob\xe1s(?P<w_1>\\w*)', u'\\1 szob\xe1s\\g<w_1>', u'K\xfcl\xf6n\xedr\xe1s.', False, 0], [u'(?u)(\\d\\d*)-r\xe9szes(?P<w_1>\\w*)', u'\\1 r\xe9szes\\g<w_1>', u'K\xfcl\xf6n\xedr\xe1s.', False, 0], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<event_1>(Advent|H\xfasv\xe9t|Kar\xe1csony|Mindenszentek|P\xfcnk\xf6sd|(Any\xe1k|Ap\xe1k|Halottak|N\u0151k) [Nn]apj)(?P<abc_1>[a-z\xf6\xfc\xf3\u0171\u0151\xfa\xe9\xe1\xedA-Z\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd]+)*)(?![-\\w\u2013\xad])', u'= m.group("event_1").lower()', u'Kisbet\u0171s kifejez\xe9s, ha nem c\xedm. | http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/A_kis_\xe9s_a_nagy_kezd\u0151bet\u0171k#145.', u'wordmin(s[:m.start()],1) and word(s[m.end():],1) == word(s[m.end():],1).lower()', 0], [u'(?u)foci ([Ev])[bB](?P<kw_1>([-][a-zA-Z\xf6\xfc\xf3\u0171\u0151\xfa\xe9\xe1\xed\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd][a-zA-Z\xf6\xfc\xf3\u0171\u0151\xfa\xe9\xe1\xed\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd]*)?)', u'foci-\\1b\\g<kw_1>', u'K\xf6t\u0151jeles kifejez\xe9s.', False, 0], [u'(?u)^K\xe9ts\xe9g k\xedv\xfcl', u'K\xe9ts\xe9gk\xedv\xfcl', u'Egybe\xedr\xe1s.', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Aa][Ll][Ii][Gg] [Aa][Ll][Ii][Gg](?![-\\w\u2013\xad])', u'alig-alig', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Kk][Ii] [Kk][Ii](?![-\\w\u2013\xad])', u'ki-ki', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ii][Ss] [Ii][Ss](?![-\\w\u2013\xad])', u'is-is', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Kk][Ii][Nn][Ee][Kk] [Kk][Ii][Nn][Ee][Kk](?![-\\w\u2013\xad])', u'kinek-kinek', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Kk][\xd6\xf6][Rr][Bb][Ee] [Kk][\xd6\xf6][Rr][Bb][Ee](?![-\\w\u2013\xad])', u'k\xf6rbe-k\xf6rbe', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Kk][\xd6\xf6][Zz][Bb][Ee] [Kk][\xd6\xf6][Zz][Bb][Ee](?![-\\w\u2013\xad])', u'k\xf6zbe-k\xf6zbe', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Kk][\xdc\xfc][Ll][\xd6\xf6][Nn] [Kk][\xdc\xfc][Ll][\xd6\xf6][Nn](?![-\\w\u2013\xad])', u'k\xfcl\xf6n-k\xfcl\xf6n', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Mm][\xc1\xe1][Rr] [Mm][\xc1\xe1][Rr](?![-\\w\u2013\xad])', u'm\xe1r-m\xe1r', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Mm][\xc1\xe1][Ss] [Mm][\xc1\xe1][Ss](?![-\\w\u2013\xad])', u'm\xe1s-m\xe1s', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Mm][Ee][Ss][Ss][Zz][Ee] [Mm][Ee][Ss][Ss][Zz][Ee](?![-\\w\u2013\xad])', u'messze-messze', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Nn][Aa][Gg][Yy][Oo][Nn] [Nn][Aa][Gg][Yy][Oo][Nn](?![-\\w\u2013\xad])', u'nagyon-nagyon', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Nn][\xc9\xe9][Hh][Aa] [Nn][\xc9\xe9][Hh][Aa](?![-\\w\u2013\xad])', u'n\xe9ha-n\xe9ha', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Oo][Ll][Yy][Kk][Oo][Rr] [Oo][Ll][Yy][Kk][Oo][Rr](?![-\\w\u2013\xad])', u'olykor-olykor', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Tt][\xda\xfa][Ll] [Tt][\xda\xfa][Ll](?![-\\w\u2013\xad])', u't\xfal-t\xfal', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ss][Oo][Kk] [Ss][Oo][Kk](?![-\\w\u2013\xad])', u'sok-sok', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[\xda\xfa][Gg][Yy] [\xda\xfa][Gg][Yy](?![-\\w\u2013\xad])', u'\xfagy-\xfagy', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Cc][Ss][Ii][Pp] [Cc][Ss][Uu][Pp](?![-\\w\u2013\xad])', u'csip-csup', u'K\xf6t\u0151jeles ikersz\xf3. (AkH. 103.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[\xc9\xe9][Hh][Ee][Nn] [Ss][Zz][Oo][Mm][Jj][Aa][Nn](?![-\\w\u2013\xad])', u'\xe9hen-szomjan', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ii][Nn][Gg][\xd3\xf3] [Bb][Ii][Nn][Gg][\xd3\xf3](?![-\\w\u2013\xad])', u'ing\xf3-bing\xf3', u'K\xf6t\u0151jeles ikersz\xf3. (AkH. 103.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ss][Ee][Bb][Bb][Ee][Ll] [Ll][Oo][Bb][Bb][Aa][Ll](?![-\\w\u2013\xad])', u'sebbel-lobbal', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ss][Zz][Ee][Gg][Rr][\u0150\u0151][Ll] [Vv][\xc9\xe9][Gg][Rr][\u0150\u0151][Ll](?![-\\w\u2013\xad])', u'szegr\u0151l-v\xe9gr\u0151l', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ss][Zz][\xc9\xe9][Ll][Tt][\xc9\xe9][Bb][Ee][Nn] [Hh][Oo][Ss][Ss][Zz][\xc1\xe1][Bb][Aa][Nn](?![-\\w\u2013\xad])', u'sz\xe9lt\xe9ben-hossz\xe1ban', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ss][Zz][\u0150\u0151][Rr][\xd6\xf6][Ss][Tt][\xdc\xfc][Ll] [Bb][\u0150\u0151][Rr][\xd6\xf6][Ss][Tt][\xdc\xfc][Ll](?![-\\w\u2013\xad])', u'sz\u0151r\xf6st\xfcl-b\u0151r\xf6st\xfcl', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ss][Zz][\u0150\u0151][Rr][\xc9\xe9][Nn] [Ss][Zz][\xc1\xe1][Ll][\xc1\xe1][Nn](?![-\\w\u2013\xad])', u'sz\u0151r\xe9n-sz\xe1l\xe1n', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Tt][\xc9\xe9][Ll][Ee][Nn] [Nn][Yy][\xc1\xe1][Rr][Oo][Nn](?![-\\w\u2013\xad])', u't\xe9len-ny\xe1ron', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Tt][Ee][Ss][Tt][Ee][Ss][Tt][\u0150\u0151][Ll] [Ll][Ee][Ll][Kk][Ee][Ss][Tt][\u0150\u0151][Ll](?![-\\w\u2013\xad])', u'testest\u0151l-lelkest\u0151l', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Tt][Ee][Ss][Tt][Ee][Ss][Tt][\xdc\xfc][Ll] [Ll][Ee][Ll][Kk][Ee][Ss][Tt][\xdc\xfc][Ll](?![-\\w\u2013\xad])', u'testest\xfcl-lelkest\xfcl', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Tt][\xd6\xf6][Bb][Bb][\xc9\xe9] [Kk][Ee][Vv][\xc9\xe9][Ss][Bb][\xc9\xe9](?![-\\w\u2013\xad])', u't\xf6bb\xe9-kev\xe9sb\xe9', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Tt][\xd6\xf6][Rr][Ii][Kk] [Ss][Zz][Aa][Kk][Aa][Dd](?![-\\w\u2013\xad])', u't\xf6rik-szakad', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Tt][\u0170\u0171][Zz][\xd6\xf6][Nn] [Vv][\xcd\xed][Zz][Ee][Nn](?![-\\w\u2013\xad])', u't\u0171z\xf6n-v\xedzen', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Tt][\u0170\u0171][Zz][Zz][Ee][Ll] [Vv][Aa][Ss][Ss][Aa][Ll](?![-\\w\u2013\xad])', u't\u0171zzel-vassal', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Vv][\xc9\xe9][Gg][Ee][Ss] [Vv][\xc9\xe9][Gg][Ii][Gg](?![-\\w\u2013\xad])', u'v\xe9ges-v\xe9gig', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Tt][\xdc\xfc][Ss][Kk][\xc9\xe9][Nn] [Bb][Oo][Kk][Rr][Oo][Nn](?![-\\w\u2013\xad])', u't\xfcsk\xe9n-bokron', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Vv][\xc9\xe9][Gg][Rr][Ee] [Vv][Aa][Ll][Aa][Hh][\xc1\xe1][Rr][Aa](?![-\\w\u2013\xad])', u'v\xe9gre-valah\xe1ra', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ii][Mm][\xcd\xed][Gg][Yy] [Aa][Mm][\xda\xfa][Gg][Yy](?![-\\w\u2013\xad])', u'im\xedgy-am\xfagy', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ii][Nn][Nn][Ee][Nn] [Oo][Nn][Nn][Aa][Nn](?![-\\w\u2013\xad])', u'innen-onnan', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ii][Tt][Tt] [Oo][Tt][Tt](?![-\\w\u2013\xad])', u'itt-ott', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[\xcd\xed][Zz][Ii][Gg] [Vv][\xc9\xe9][Rr][Ii][Gg](?![-\\w\u2013\xad])', u'\xedzig-v\xe9rig', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[\xcd\xed][Zz][Zz][\xc9\xe9] [Pp][Oo][Rr][Rr][\xc1\xe1](?![-\\w\u2013\xad])', u'\xedzz\xe9-porr\xe1', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Jj][Aa][Jj][Jj][Aa][Ll] [Bb][Aa][Jj][Jj][Aa][Ll](?![-\\w\u2013\xad])', u'jajjal-bajjal', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Jj][\xd3\xf3][Bb][Aa][Nn] [Rr][Oo][Ss][Ss][Zz][Bb][Aa][Nn](?![-\\w\u2013\xad])', u'j\xf3ban-rosszban', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Jj][Oo][Bb][Bb][Rr][Aa] [Bb][Aa][Ll][Rr][Aa](?![-\\w\u2013\xad])', u'jobbra-balra', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Jj][\xd3\xf3][Ll] [Rr][Oo][Ss][Ss][Zz][Uu][Ll](?![-\\w\u2013\xad])', u'j\xf3l-rosszul', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Kk][\xc9\xe9][Kk][Rr][Ee] [Zz][\xd6\xf6][Ll][Dd][Rr][Ee](?![-\\w\u2013\xad])', u'k\xe9kre-z\xf6ldre', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Kk][\xc9\xe9][Nn][Yy][Tt][Ee][Ll][Ee][Nn] [Kk][Ee][Ll][Ll][Ee][Tt][Ll][Ee][Nn](?![-\\w\u2013\xad])', u'k\xe9nytelen-kelletlen', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Kk][\xc9\xe9][Zz][Ee][Nn] [Kk][\xd6\xf6][Zz][\xd6\xf6][Nn](?![-\\w\u2013\xad])', u'k\xe9zen-k\xf6z\xf6n', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Kk][\xd6\xf6][Rr][\xd6\xf6][Ss] [Kk][\xd6\xf6][Rr][\xdc\xfc][Ll](?![-\\w\u2013\xad])', u'k\xf6r\xf6s-k\xf6r\xfcl', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Kk][\xc9\xe9][Zz][Zz][Ee][Ll] [Ll][\xc1\xe1][Bb][Bb][Aa][Ll](?![-\\w\u2013\xad])', u'k\xe9zzel-l\xe1bbal', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Kk][Uu][Rr][Tt][\xc1\xe1][Nn] [Ff][Uu][Rr][Cc][Ss][\xc1\xe1][Nn](?![-\\w\u2013\xad])', u'kurt\xe1n-furcs\xe1n', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ll][\xc9\xe9][Pp][Tt][Ee][Nn] [Nn][Yy][Oo][Mm][Oo][Nn](?![-\\w\u2013\xad])', u'l\xe9pten-nyomon', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Mm][Ee][Nn][Ee][Tt] [Jj][\xd6\xf6][Vv][Ee][Tt](?![-\\w\u2013\xad])', u'menet-j\xf6vet', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Nn][Yy][Aa][Kk][Rr][Aa] [Ff][\u0150\u0151][Rr][Ee](?![-\\w\u2013\xad])', u'nyakra-f\u0151re', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[\xd6\xf6][Rr][\xd6\xf6][Kk][Kk][\xd6\xf6][Nn] [\xd6\xf6][Rr][\xd6\xf6][Kk][Kk][\xc9\xe9](?![-\\w\u2013\xad])', u'\xf6r\xf6kk\xf6n-\xf6r\xf6kk\xe9', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ss][\xdc\xfc][Ll][Vv][Ee] [Ff][\u0150\u0151][Vv][Ee](?![-\\w\u2013\xad])', u's\xfclve-f\u0151ve', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[\xda\xfa][Tt][Oo][Nn] [\xda\xfa][Tt][Ff][\xc9\xe9][Ll][Ee][Nn](?![-\\w\u2013\xad])', u'\xfaton-\xfatf\xe9len', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[\xdc\xfc][Gg][Gg][Yy][Ee][Ll] [Bb][Aa][Jj][Jj][Aa][Ll](?![-\\w\u2013\xad])', u'\xfcggyel-bajjal', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])([\xc1\xe1][Gg]\\w*) ([Bb][Oo][Gg]\\w*)(?![-\\w\u2013\xad])', u'\\1-\\2', u'K\xf6t\u0151jeles ikersz\xf3. (AkH. 103.)', u'stem(LOCALE,m.group(1)) == [u"\xe1g"] and stem(LOCALE,m.group(2)) == ["bog"]', 0], [u'(?u)(?<![-\\w\u2013.,\xad])(\xc9szaki|D\xe9li)(?:-S| [Ss])ark(?P<w_1>\\w*)(?![-\\w\u2013\xad])', u'\\1-sark\\g<w_1>', u'F\xf6ldrajzi n\xe9v.', False, 0], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<Dir_1>\xc9szak|D\xe9l|Kelet|Nyugat|\xc9szakkelet|\xc9szaknyugat|D\xe9lkelet|D\xe9lnyugat)-(?P<cap_1>(?P<ABC_1>[A-Z\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd])(?P<abc_1>[a-z\xf6\xfc\xf3\u0171\u0151\xfa\xe9\xe1\xedA-Z\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd]+)+)(?![-\\w\u2013\xad])', u'= m.group("Dir_1") + "-" + m.group("cap_1").lower()', u'Kisbet\u0171vel \xedrt f\xf6ldrajzi n\xe9v. | http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/A_tulajdonnevek_\xedr\xe1sa#179.', u'morph(LOCALE,m.group("cap_1"), r"po:noun_prs.*is:i_PLACE", False)', 0], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<dir_1>\xe9szak|d\xe9l|kelet|nyugat|\xe9szakkelet|\xe9szaknyugat|d\xe9lkelet|d\xe9lnyugat)-(?P<cap_1>(?P<ABC_1>[A-Z\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd])(?P<abc_1>[a-z\xf6\xfc\xf3\u0171\u0151\xfa\xe9\xe1\xedA-Z\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd]+)+)(?![-\\w\u2013\xad])', u'= m.group("dir_1").capitalize() + "-" + m.group("cap_1")', u'Nagybet\u0171vel \xedrt f\xf6ldrajzi n\xe9v. | http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/A_tulajdonnevek_\xedr\xe1sa#179.', u'morph(LOCALE,m.group("cap_1"), r"po:noun_prs", False) and not morph(LOCALE,m.group("cap_1"),"is:i_PLACE", False)', 0], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<Dir_1>\xc9szak|D\xe9l|Kelet|Nyugat|\xc9szakkelet|\xc9szaknyugat|D\xe9lkelet|D\xe9lnyugat)-(?P<sc_1>(?P<abc_1>[a-z\xf6\xfc\xf3\u0171\u0151\xfa\xe9\xe1\xedA-Z\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd]+)+)(?![-\\w\u2013\xad])', u'= m.group("Dir_1").lower() + "-" + m.group("sc_1")', u'Kisbet\u0171vel \xedrt f\xf6ldrajzi n\xe9v. | http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/A_tulajdonnevek_\xedr\xe1sa#179.', u'wordmin(s[:m.start()],1) and word(s[m.end():],1) and not word(s[m.end():],1) == word(s[m.end():],1).capitalize() and morph(LOCALE,m.group("sc_1"), r"po:noun_prs.*is:i_PLACE", False)', 0], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<Dir_1>\xc9szak|D\xe9l|Kelet|Nyugat|\xc9szakkelet|\xc9szaknyugat|D\xe9lkelet|D\xe9lnyugat) (?P<w_1>(?P<Abc_1>(?P<abc_1>[a-z\xf6\xfc\xf3\u0171\u0151\xfa\xe9\xe1\xed])|(?P<ABC_1>[A-Z\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd]))+)(?![-\\w\u2013\xad])', u'\\g<Dir_1>-\\g<w_1>', u'K\xf6t\u0151jellel \xedrt f\xf6ldrajzi n\xe9v. | http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/A_tulajdonnevek_\xedr\xe1sa#179.', u'morph(LOCALE,m.group("w_1"), r"po:noun_prs")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<cap_1>(?P<ABC_1>[A-Z\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd])(?P<abc_1>[a-z\xf6\xfc\xf3\u0171\u0151\xfa\xe9\xe1\xedA-Z\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd]+)+)-(?P<prop_1>Tenger|\xd3ce\xe1n|Sziget|F\xe9lsziget|K\xf6z\xe9phegys\xe9g)(?![-\\w\u2013\xad])', u'= m.group("cap_1") + "-" + m.group("prop_1").lower()', u'Kisbet\u0171s \xedrt k\xf6zn\xe9vi tag. | http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/A_tulajdonnevek_\xedr\xe1sa#176.', False, 0], [u'(?u)(?<![-\\w\u2013.,\xad])(\xc1rp\xe1d|Erzs\xe9bet|Haj\xf3gy\xe1ri|Margit|Megyeri|Pet\u0151fi|R\xe1k\xf3czi|Szabads\xe1g)-(h\xedd\\w*)(?![-\\w\u2013\xad])', u'\\1 \\2', u'K\xfcl\xf6n\xedr\xe1s. | http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/A_tulajdonnevek_\xedr\xe1sa#182.', False, 0], [u'(?u)(?<![-\\w\u2013.,\xad])(Szabads\xe1g)(h\xedd\\w*)(?![-\\w\u2013\xad])', u'\\1 \\2', u'K\xfcl\xf6n\xedr\xe1s. | http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/A_tulajdonnevek_\xedr\xe1sa#182.', False, 0], [u'(?u)(?<![-\\w\u2013.,\xad])(Szabads\xe1g ?)(szobo?r\\w*)(?![-\\w\u2013\xad])', u'\\1-\\2', u'K\xf6t\u0151jeles \xf6sszet\xe9tel. | http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/A k\xfcl\xf6n\xedr\xe1s \xe9s az egybe\xedr\xe1s#140.', False, 0], [u'(?u)(?<![-\\w\u2013.,\xad])(Fert\u0151)-(([tT]\xf3|[tT]av)\\w*)(?![-\\w\u2013\xad])', u'= m.group(1) + " " + m.group(2).lower()', u'K\xf6t\u0151jel n\xe9lk\xfcl \xedrt f\xf6ldrajzi n\xe9v. | http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/A_tulajdonnevek_\xedr\xe1sa#183.', False, 0], [u'(?u)(?<![-\\w\u2013.,\xad])(G\xf3bi|Kalah\xe1ri|Szahara)-([sS]ivatag\\w*)(?![-\\w\u2013\xad])', u'= m.group(1) + " " + m.group(2).lower()', u'K\xf6t\u0151jel n\xe9lk\xfcl \xedrt f\xf6ldrajzi n\xe9v. | http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/A_tulajdonnevek_\xedr\xe1sa#183.', False, 0], [u'(?u)(?<![-\\w\u2013.,\xad])(B\xf6rzs\xf6ny|B\xfckk|M\xe1tra|Mecsek|Pilis|Zempl\xe9n|V\xe9rtes)-([Hh]egys\xe9g\\w*)(?![-\\w\u2013\xad])', u'= m.group(1) + " " + m.group(2).lower()', u'K\xf6t\u0151jel n\xe9lk\xfcl \xedrt f\xf6ldrajzi n\xe9v. | http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/A_tulajdonnevek_\xedr\xe1sa#183.', False, 0], [u'(?u)(?<![-\\w\u2013.,\xad])(Duna)-(folyam\\w*)(?![-\\w\u2013\xad])', u'= m.group(1) + " " + m.group(2).lower()', u'K\xf6t\u0151jel n\xe9lk\xfcl \xedrt f\xf6ldrajzi n\xe9v. | http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/A_tulajdonnevek_\xedr\xe1sa#183.', False, 0], [u'(?u)(?<![-\\w\u2013.,\xad])(Bodrog|Duna|Dr\xe1va|Ipoly|K\xf6r\xf6s|Maros|R\xe1ba|Saj\xf3|Tisza|Zala)-(([Ff]oly\xf3|[Ff]olyam)\\w*)(?![-\\w\u2013\xad])', u'= m.group(1) + " " + m.group(2).lower()', u'K\xf6t\u0151jel n\xe9lk\xfcl \xedrt f\xf6ldrajzi n\xe9v. | http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/A_tulajdonnevek_\xedr\xe1sa#183.', False, 0], [u'(?u)(?<![-\\w\u2013.,\xad])Budapest (Liszt Ferenc )([Nn]emzetk\xf6zi [Rr]ep\xfcl\u0151t[e\xe9])(r\\w*)(?![-\\w\u2013\xad])', u'= m.group(1) + m.group(2).lower() + m.group(3) + "|ferihegyi " + m.group(1) + m.group(2).lower() + m.group(3) + "|" + m.group(3).replace("r", "Ferihegy", 1).replace("gyrel", "ggyel").replace(u"gyr\xe9", u"ggy\xe9") + "|Budapest, " + m.group(1) + m.group(2).lower() + m.group(3)', u'A k\xf6zn\xe9vi tag kisbet\u0171s, a c\xedmet vessz\u0151vel tagoljuk. (AkH. 190., 247.; FNB 74.) | http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Az_\xedr\xe1sjelek#247.', False, 0], [u'(?u)(?<![-\\w\u2013.,\xad])(olya\\w+) (aki\\w*|ami\\w*)(?![-\\w\u2013\xad])', u'\\1, \\2', u'Hi\xe1nyz\xf3 vessz\u0151 a tagmondatok hat\xe1r\xe1n?', u'morph(LOCALE,m.group(2), r"st:(aki|ami|amilyen)\\b")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<igekoto_1>[Aa][Bb][Bb][Aa]|[Aa][Gg][Yy][Oo][Nn]|[Aa][Ll][\xc1\xe1]|[\xc1\xe1][Ll][Tt][Aa][Ll]|[\xc1\xe1][Tt]|[Bb][Ee]|[Bb][Ee][Ll][Ee]|[Bb][Ee][Nn][Nn]|[Ee][Gg][Yy][Bb][Ee]|[Ee][Gg][Yy][\xdc\xfc][Tt][Tt]|[Ee][Ll]|[Ee][Ll][Ll][Ee][Nn]|[Ee][Ll][\u0150\u0151]|[Ee][Ll][\u0150\u0151][Rr][Ee]|[Ff][Ee][Ll]|[Ff][\xd6\xf6][Ll]|[Ff][\xc9\xe9][Ll][Bb][Ee]|[Ff][\xc9\xe9][Ll][Rr][Ee]|[Ff][Ee][Ll][\xdc\xfc][Ll]|[Ff][\xd6\xf6][Ll][\xdc\xfc][Ll]|[Ff][Ee][Nn][Nn]|[Ff][\xd6\xf6][Nn][Nn]|[Hh][\xc1\xe1][Tt][Rr][Aa]|[Hh][Aa][Zz][Aa]|[Hh][Ee][Ll][Yy][Rr][Ee]|[Hh][Oo][Zz][Zz][\xc1\xe1]|[Ii][Dd][Ee]|[Jj][\xd3\xf3][Vv][\xc1\xe1]|[Kk][Ee][Rr][Ee][Ss][Zz][Tt][\xdc\xfc][Ll]|[Kk][Ee][Tt][Tt][\xc9\xe9]|[Kk][Ii]|[Kk][\xd6\xf6][Ll][Cc][Ss][\xd6\xf6][Nn]|[Kk][\xd6\xf6][Rr][Bb][Ee]|[Kk][\xd6\xf6][Rr][\xdc\xfc][Ll]|[Kk][\xd6\xf6][Zz][Bb][Ee]|[Kk][\xd6\xf6][Zz][Rr][Ee]|[Kk][\xdc\xfc][Ll][\xd6\xf6][Nn]|[Ll][Ee]|[Mm][Ee][Gg]|[Mm][Ee][Ll][Ll][\xc9\xe9]|[Nn][Ee][Kk][Ii]|[Oo][Dd][Aa]|[\xd6\xf6][Ss][Ss][Zz][Ee]|[Rr][\xc1\xe1]|[Rr][Aa][Jj][Tt][Aa]|[Ss][Zz][\xc9\xe9][Jj][Jj][Ee][Ll]|[Ss][Zz][Ee][Mm][Bb][Ee]|[Ss][Zz][Ee][Rr][Tt][Ee]|[Ss][Zz][\xc9\xe9][Tt]|[Tt][Ee][Ll][Ee]|[Tt][Oo][Vv][Aa]|[Tt][Oo][Vv][\xc1\xe1][Bb][Bb]|[Tt][\xda\xfa][Ll]|[\xda\xfa][Jj][Jj][\xc1\xe1]|[\xda\xfa][Jj][Rr][Aa]|[Uu][Tt][\xc1\xe1][Nn][Aa]|[Vv][\xc9\xe9][Gg][Bb][Ee]|[Vv][\xc9\xe9][Gg][Ii][Gg]|[Vv][Ii][Ss][Ss][Zz][Aa])(?P<segedige_1>([Aa][Kk][Aa][Rr]|[Bb][\xcd\xed][Rr]|[Ff][Oo][Gg]|[Ll][Ee][Gg][Yy]|[Ll][Ee][Hh][Ee][Tt]|[Ll][Ee][Nn][Nn]|[Ll][Ee][Ss][Zz]|[Ll][Ee][Tt][Tt]|[Ss][Zz][Aa][Bb][Aa][Dd]|[Ss][Zz][Ee][Rr][Ee][Tt]|[Tt][Aa][Ll][\xc1\xe1][Ll]|[Tt][Uu][Dd]|[Vv][Aa][Nn]|[Vv][Oo][Ll])\\w*)(?P<szavak_1>( \\w+){0,}) (?P<igenev_1>(\\w+[Nn][Ii]))(?![-\\w\u2013\xad])', u'\\g<igekoto_1> \\g<segedige_1>\\g<szavak_1> \\g<igenev_1>', u'Az igek\xf6t\u0151t nem \xedrjuk egybe a seg\xe9dig\xe9vel.', u'morph(LOCALE,m.group("igenev_1"), "INFINITIVE") and morph(LOCALE,m.group("igekoto_1")+m.group("segedige_1"), r"is:[/\\w]*DEF|ds:tt")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<igekoto_1>[Aa][Bb][Bb][Aa]|[Aa][Gg][Yy][Oo][Nn]|[Aa][Ll][\xc1\xe1]|[\xc1\xe1][Ll][Tt][Aa][Ll]|[\xc1\xe1][Tt]|[Bb][Ee]|[Bb][Ee][Ll][Ee]|[Bb][Ee][Nn][Nn]|[Ee][Gg][Yy][Bb][Ee]|[Ee][Gg][Yy][\xdc\xfc][Tt][Tt]|[Ee][Ll]|[Ee][Ll][Ll][Ee][Nn]|[Ee][Ll][\u0150\u0151]|[Ee][Ll][\u0150\u0151][Rr][Ee]|[Ff][Ee][Ll]|[Ff][\xd6\xf6][Ll]|[Ff][\xc9\xe9][Ll][Bb][Ee]|[Ff][\xc9\xe9][Ll][Rr][Ee]|[Ff][Ee][Ll][\xdc\xfc][Ll]|[Ff][\xd6\xf6][Ll][\xdc\xfc][Ll]|[Ff][Ee][Nn][Nn]|[Ff][\xd6\xf6][Nn][Nn]|[Hh][\xc1\xe1][Tt][Rr][Aa]|[Hh][Aa][Zz][Aa]|[Hh][Ee][Ll][Yy][Rr][Ee]|[Hh][Oo][Zz][Zz][\xc1\xe1]|[Ii][Dd][Ee]|[Jj][\xd3\xf3][Vv][\xc1\xe1]|[Kk][Ee][Rr][Ee][Ss][Zz][Tt][\xdc\xfc][Ll]|[Kk][Ee][Tt][Tt][\xc9\xe9]|[Kk][Ii]|[Kk][\xd6\xf6][Ll][Cc][Ss][\xd6\xf6][Nn]|[Kk][\xd6\xf6][Rr][Bb][Ee]|[Kk][\xd6\xf6][Rr][\xdc\xfc][Ll]|[Kk][\xd6\xf6][Zz][Bb][Ee]|[Kk][\xd6\xf6][Zz][Rr][Ee]|[Kk][\xdc\xfc][Ll][\xd6\xf6][Nn]|[Ll][Ee]|[Mm][Ee][Gg]|[Mm][Ee][Ll][Ll][\xc9\xe9]|[Nn][Ee][Kk][Ii]|[Oo][Dd][Aa]|[\xd6\xf6][Ss][Ss][Zz][Ee]|[Rr][\xc1\xe1]|[Rr][Aa][Jj][Tt][Aa]|[Ss][Zz][\xc9\xe9][Jj][Jj][Ee][Ll]|[Ss][Zz][Ee][Mm][Bb][Ee]|[Ss][Zz][Ee][Rr][Tt][Ee]|[Ss][Zz][\xc9\xe9][Tt]|[Tt][Ee][Ll][Ee]|[Tt][Oo][Vv][Aa]|[Tt][Oo][Vv][\xc1\xe1][Bb][Bb]|[Tt][\xda\xfa][Ll]|[\xda\xfa][Jj][Jj][\xc1\xe1]|[\xda\xfa][Jj][Rr][Aa]|[Uu][Tt][\xc1\xe1][Nn][Aa]|[Vv][\xc9\xe9][Gg][Bb][Ee]|[Vv][\xc9\xe9][Gg][Ii][Gg]|[Vv][Ii][Ss][Ss][Zz][Aa])(?P<letige_1>([Ll][Ee][Gg][Yy]|[Ll][Ee][Hh][Ee][Tt]|[Ll][Ee][Nn][Nn]|[Ll][Ee][Ss][Zz]|[Ll][Ee][Tt][Tt]|[Vv][Aa][Nn]|[Vv][Oo][Ll])\\w*)(?P<szavak_1>( \\w+){0,}) (?P<igenev_1>(\\w+[Vv][EeAa]))(?![-\\w\u2013\xad])', u'\\g<igekoto_1> \\g<letige_1>\\g<szavak_1> \\g<igenev_1>', u'Az igek\xf6t\u0151 a lenni + -va/-ve szerkezetben nem a l\xe9tig\xe9hez kapcsol\xf3dik.', u'morph(LOCALE,m.group("igenev_1"), "_PART") and morph(LOCALE,m.group("igekoto_1")+m.group("letige_1"), r"is:[/\\w]*DEF|ds:tt")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])([Hh][Aa][Dd]|[Hh][Aa][Gg][Yy])( ([Nn][Ee] )?)(?P<W_1>\\w+)(?![-\\w\u2013\xad])', u'\\1d\\2\\g<W_1>', u'Hadd helyesen.', u'morph(LOCALE,m.group("W_1"), r"(IMPER[_\\w]*SG_1|is:[_/\\w]*DEF_PL)") or (not wordmin(s[:m.start()],1) and morph(LOCALE,m.group("W_1"), r"is:[_/\\w]*DEF_SG_[23]"))', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])(\\w+[LlNnRrZz][Dd]) (?P<igekoto_1>[Aa][Bb][Bb][Aa]|[Aa][Gg][Yy][Oo][Nn]|[Aa][Ll][\xc1\xe1]|[\xc1\xe1][Ll][Tt][Aa][Ll]|[\xc1\xe1][Tt]|[Bb][Ee]|[Bb][Ee][Ll][Ee]|[Bb][Ee][Nn][Nn]|[Ee][Gg][Yy][Bb][Ee]|[Ee][Gg][Yy][\xdc\xfc][Tt][Tt]|[Ee][Ll]|[Ee][Ll][Ll][Ee][Nn]|[Ee][Ll][\u0150\u0151]|[Ee][Ll][\u0150\u0151][Rr][Ee]|[Ff][Ee][Ll]|[Ff][\xd6\xf6][Ll]|[Ff][\xc9\xe9][Ll][Bb][Ee]|[Ff][\xc9\xe9][Ll][Rr][Ee]|[Ff][Ee][Ll][\xdc\xfc][Ll]|[Ff][\xd6\xf6][Ll][\xdc\xfc][Ll]|[Ff][Ee][Nn][Nn]|[Ff][\xd6\xf6][Nn][Nn]|[Hh][\xc1\xe1][Tt][Rr][Aa]|[Hh][Aa][Zz][Aa]|[Hh][Ee][Ll][Yy][Rr][Ee]|[Hh][Oo][Zz][Zz][\xc1\xe1]|[Ii][Dd][Ee]|[Jj][\xd3\xf3][Vv][\xc1\xe1]|[Kk][Ee][Rr][Ee][Ss][Zz][Tt][\xdc\xfc][Ll]|[Kk][Ee][Tt][Tt][\xc9\xe9]|[Kk][Ii]|[Kk][\xd6\xf6][Ll][Cc][Ss][\xd6\xf6][Nn]|[Kk][\xd6\xf6][Rr][Bb][Ee]|[Kk][\xd6\xf6][Rr][\xdc\xfc][Ll]|[Kk][\xd6\xf6][Zz][Bb][Ee]|[Kk][\xd6\xf6][Zz][Rr][Ee]|[Kk][\xdc\xfc][Ll][\xd6\xf6][Nn]|[Ll][Ee]|[Mm][Ee][Gg]|[Mm][Ee][Ll][Ll][\xc9\xe9]|[Nn][Ee][Kk][Ii]|[Oo][Dd][Aa]|[\xd6\xf6][Ss][Ss][Zz][Ee]|[Rr][\xc1\xe1]|[Rr][Aa][Jj][Tt][Aa]|[Ss][Zz][\xc9\xe9][Jj][Jj][Ee][Ll]|[Ss][Zz][Ee][Mm][Bb][Ee]|[Ss][Zz][Ee][Rr][Tt][Ee]|[Ss][Zz][\xc9\xe9][Tt]|[Tt][Ee][Ll][Ee]|[Tt][Oo][Vv][Aa]|[Tt][Oo][Vv][\xc1\xe1][Bb][Bb]|[Tt][\xda\xfa][Ll]|[\xda\xfa][Jj][Jj][\xc1\xe1]|[\xda\xfa][Jj][Rr][Aa]|[Uu][Tt][\xc1\xe1][Nn][Aa]|[Vv][\xc9\xe9][Gg][Bb][Ee]|[Vv][\xc9\xe9][Gg][Ii][Gg]|[Vv][Ii][Ss][Ss][Zz][Aa])(?![-\\w\u2013\xad])', u'\\1d \\2', u'Felsz\xf3l\xedt\xf3 m\xf3d.', u'(not wordmin(s[:m.start()],1) or wordmin(s[:m.start()],1).lower() == "ne") and morph(LOCALE,m.group(1), "st:" + m.group(1).lower() + r"\\b") and morph(LOCALE,m.group(1)+"d", r"IMPER")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Kk][\xc9\xe9][Rr][Dd][Dd] [Ee][Ll](?![-\\w\u2013\xad])', u'k\xe9rd el', u'\u201ek\xe9r\u201d felsz\xf3l\xedt\xf3 m\xf3dja.', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])([Mm][Ee][Gg][Ff][Ee])([Dd]\\w*)(?![-\\w\u2013\xad])', u'\\1d\\2', u'Megfedd helyesen.', u'morph(LOCALE,m.group(1)+m.group(2), r"st:fed\\b")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])([Ee][Ll][Tt][Uu][Ss])([Oo][Ll]\\w*)(?![-\\w\u2013\xad])', u'\\1s\\2', u'Eltussol helyesen (kiv\xe9ve, ha zuhanyz\xe1sr\xf3l van sz\xf3).', u'morph(LOCALE,m.group(1)+m.group(2), r"st:tusol\\b")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ff][\u0150\u0151][Kk][\xc9\xe9]([Pp]|[Pp][Ee][Nn])(?![-\\w\u2013\xad])', u'f\u0151k\xe9p\\1', u'Ha hat\xe1roz\xf3sz\xf3, akkor f\u0151k\xe9pp.', u'wordmin(s[:m.start()],1) != "a" and wordmin(s[:m.start()],1) != "A"', 0], [u'(?u)\\b0-\xe1(\\w+)', u'0-\\1', u'Hib\xe1s toldal\xe9k?', False, 0], [u'(?u)(\\d*[14])-el\\b', u'\\1-gyel', u'Hib\xe1s toldal\xe9k?', False, 0], [u'(?u)(\\d*2)-\u0151(\\w+)', u'\\1-\\2', u'Hib\xe1s toldal\xe9k?', False, 0], [u'(?u)(\\d*3)-\xe1\\b', u'\\1-m\xe1', u'Hib\xe1s toldal\xe9k?', False, 0], [u'(?u)(\\d*3)-al\\b', u'\\1-mal', u'Hib\xe1s toldal\xe9k?', False, 0], [u'(?u)(\\d*[57])-el\\b', u'\\1-tel', u'Hib\xe1s toldal\xe9k?', False, 0], [u'(?u)(\\d*6)-\xe1\\b', u'\\1-t\xe1', u'Hib\xe1s toldal\xe9k?', False, 0], [u'(?u)(\\d*8)-\xe1\\b', u'\\1-c\xe1', u'Hib\xe1s toldal\xe9k?', False, 0], [u'(?u)(\\d*9)-el\\b', u'\\1-cel', u'Hib\xe1s toldal\xe9k?', False, 0], [u'(?u)(\\d*10)-el\\b', u'\\1-zel', u'Hib\xe1s toldal\xe9k?', False, 0], [u'(?u)(\\d*20)-\xe1\\b', u'\\1-sz\xe1', u'Hib\xe1s toldal\xe9k?', False, 0], [u'(?u)(\\d*30)-\xe1\\b', u'\\1-c\xe1', u'Hib\xe1s toldal\xe9k?', False, 0], [u'(?u)(\\d*[4579]0)-el\\b', u'\\1-nel', u'Hib\xe1s toldal\xe9k?', False, 0], [u'(?u)(\\d*[68]0)-\xe1\\b', u'\\1-n\xe1', u'Hib\xe1s toldal\xe9k?', False, 0], [u'(?u)\\b(\\d)00-\xe1\\b', u'\\100-z\xe1', u'Hib\xe1s toldal\xe9k?', u'm.group(1) != "0"', 0], [u'(?u)\\b(\\d)000-el\\b', u'\\1000-rel', u'Hib\xe1s toldal\xe9k?', u'm.group(1) != "0"', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Tt][\xd6\xf6][Bb][Bb], [Mm][Ii][Nn][Tt](?![-\\w\u2013\xad])', u't\xf6bb mint', u'Ha nem \xf6sszehasonl\xedt\xe1s, hanem a mondanival\xf3 er\u0151s\xedt\xe9se, itt nem haszn\xe1lunk vessz\u0151t. | http://hu.wikisource.org/wiki/A_magyar_helyes\xedr\xe1s_szab\xe1lyai/Az_\xedr\xe1sjelek#243.', u'morph(LOCALE,word(s[m.end():],1), r"(po:noun.*ds:s_\\w*|po:adj|PRESPART_adj|po:adj_num.*(is:|An_MODE_adv))\\b") or (morph(LOCALE,word(s[m.end():],1), r"(po:adj_num|^\\d+$)") and morph(LOCALE,word(s[m.end():],2), r"(po:noun\\b.*is:|(po:adj_num|st:ezer\\b).*(is:|An_MODE_adv))")) or (re.match(r"\\d+$", word(s[m.end():],1)) and morph(LOCALE,word(s[m.end():],2), r"po:adj_num|st:ezer\\b") and morph(LOCALE,word(s[m.end():],3), r"po:noun\\b.*is:")) or re.match(r"\\d+%-", word(s[m.end():],1))', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])(\\w+)( [Aa][Vv][Aa][Gg][Yy])(?![-\\w\u2013\xad])', u'\\1,\\2', u'Az avagy k\xf6t\u0151sz\xf3 el\xe9 vessz\u0151t tesz\xfcnk.', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])(\\w+)( [Ii][Ll][Ll][Ee][Tt][Vv][Ee])(?![-\\w\u2013\xad])', u'\\1,\\2', u'Az illetve k\xf6t\u0151sz\xf3 el\xe9 vessz\u0151t tesz\xfcnk.', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])(\\w+)( [Ii][Ll][Ll][.])(?![-\\w\u2013\xad])', u'\\1,\\2|\\1, illetve', u'Az illetve k\xf6t\u0151sz\xf3 el\xe9 vessz\u0151t tesz\xfcnk.', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])(\\w+)( [Vv][Aa][Ll][Aa][Mm][Ii][Nn][Tt])(?![-\\w\u2013\xad])', u'\\1,\\2', u'A valamint k\xf6t\u0151sz\xf3 el\xe9 vessz\u0151t tesz\xfcnk.', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Mm][Ee][Ll][Ll][Ee][Tt](?![-\\w\u2013\xad])', u'mellett', u'Nem ink\xe1bb mellett (vagy hib\xe1s k\xfcl\xf6n\xedr\xe1s)?', u'morph(LOCALE,wordmin(s[:m.start()],1), r"po:noun.*:NOM(?!.*[di]s:)|_noun\\s+ts:NOM$")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Kk][Ee][Ll][Ll][Ee][Tt](?![-\\w\u2013\xad])', u'kellett', u'Helyes\xedr\xe1si hiba.', u'morph(LOCALE,wordmin(s[:m.start()],1), r"INF_|_inf") or morph(LOCALE,wordmin(s[:m.start()],2), r"INF_|_inf")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Kk][Ee][Ll][Ll][Ee][Tt](?![-\\w\u2013\xad])', u'kellett', u'Helyes\xedr\xe1si hiba.', u'morph(LOCALE,word(s[m.end():],1), r"INF_|_inf") or morph(LOCALE,word(s[m.end():],2), r"INF_|_inf") or word(s[m.end():],1) == "volna"', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])(\\w+) [Hh][Ee][Ll][Yy][Ee][Tt][Tt] ([Kk][Aa][Pp]\\w*)(?![-\\w\u2013\xad])', u'\\1 helyet \\2', u'Helyesen: helyet kap.', u'morph(LOCALE,m.group(1), r"st:(is|ism\xe9t|mellett|m\xe9g)\\b|is:INE") and morph(LOCALE,m.group(2), r"st:kap\\b")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])(?<=[NNn][Ee][Mm] )[Hh][Aa][Ll][Oo][Tt][Tt]([Aa][Mm]|[Uu][Nn][Kk])(?![-\\w\u2013\xad])', u'hallott\\1', u'Helyes\xedr\xe1si hiba?', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])([Hh][Aa][Ll])([Oo][Tt][Tt]\\w*)(?= r\xf3la\\w*)(?![-\\w\u2013\xad])', u'\\1l\\2', u'Helyes\xedr\xe1si hiba?', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<W_1>\\w{4,5})(?![-\\w\u2013\xad])', u'=suggest(LOCALE,m.group("W_1"))', u'Biztos, hogy helyes \xf6sszetett sz\xf3?', u'option(LOCALE,"compound") and morph(LOCALE,m.group("W_1"), "pa:")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<W_1>\\w{4,})(?![-\\w\u2013\xad])', u'=suggest(LOCALE,m.group("W_1"))', u'Biztos, hogy helyes \xf6sszetett sz\xf3?', u'option(LOCALE,"compound") and morph(LOCALE,m.group("W_1"), ur"(?u)pa:\\w\\w\\b")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<W_1>\\w{4,})(?![-\\w\u2013\xad])', u'=suggest(LOCALE,m.group("W_1"))', u'Biztos, hogy helyes \xf6sszetett sz\xf3?', u'option(LOCALE,"allcompound") and morph(LOCALE,m.group("W_1"), "pa:")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Mm][\xc9\xe9][Dd][Ii][\xc1\xe1][Kk](?![-\\w\u2013\xad])', u'm\xe9di\xe1k|m\xe9dia|h\xedrek|lapok|h\xedrcsatorn\xe1k', u'Vitatott st\xedlus\xe9rt\xe9k\u0171 alak.', u'option(LOCALE,"style")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[Uu][Nn][Ss][Zz][Ii][Mm][Pp][Aa][Tt][Ii][Kk][Uu][Ss](?![-\\w\u2013\xad])', u'unszimpatikus|ellenszenves|antipatikus', u'Vitatott st\xedlus\xe9rt\xe9k\u0171 alak.', u'option(LOCALE,"style")', 0], [u'(?u) (-\\w+)', u'\\1', u'A toldal\xe9kot sz\xf3k\xf6z n\xe9lk\xfcl \xedrjuk.', u'option(LOCALE,"wordpart") and morph(LOCALE,m.group(0), "st:-e|po:(suffix|punct)")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])([Aa]|[Aa][Zz]|[Ee][Gg][Yy]) (\\w+) (\\w+)(?![-\\w\u2013\xad])', u'\\1 \\2\\3', u'Hib\xe1s k\xfcl\xf6n\xedr\xe1s?', u'option(LOCALE,"wordpart") and spell(LOCALE,m.group(2) + m.group(3)) and morph(LOCALE,word(s[m.end():],1), "po:vrb") and affix(LOCALE,m.group(2), "ts:NOM$") and not morph(LOCALE,m.group(2), "ts:PLUR") and affix(LOCALE,m.group(3), "[it]s:NOM$")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<W_1>[-\\w]{3,}) \\1(?![-\\w\u2013\xad])', u'\\g<W_1>|\\g<W_2>-\\1', u'Sz\xf3ism\xe9tl\xe9s vagy hi\xe1nyz\xf3 k\xf6t\u0151jel?', u'option(LOCALE,"dup0") and (not wordmin(s[:m.start()],1) or not wordmin(s[:m.start()],1).lower() in ["a", "az", "minden"]) and word(s[m.end():],1) != u"h\xe1t\xe1n" and word(s[m.end():],1) != u"h\xe1t\xe1n." and not morph(LOCALE,word(s[m.end():],1), "po:post", False)', 0], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<W_1>[-\\w]{3,})(?: [-\u2013\\w\u201e\u201d]+)* \\1(?![-\\w\u2013\xad])', u'\\g<W_1>', u'T\xfalzott sz\xf3ism\xe9tl\xe9s?', u'option(LOCALE,"dup")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<W_1>[-\\w]{3,})[;,:]?(?: [-\u2013\\w\u201e\u201d]+[;,:]?)* \\1(?![-\\w\u2013\xad])', u'\\g<W_1>', u'T\xfalzott sz\xf3ism\xe9tl\xe9s?', u'option(LOCALE,"dup2")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])([-\\w]{4})([-\\w]+)(?: [-\u2013\\w\u201e\u201d]+)* \\1(\\w+)(?![-\\w\u2013\xad])', u'\\1\\2', u'T\xfalzott sz\xf3ism\xe9tl\xe9s?', u'option(LOCALE,"dup3") and option(LOCALE,"dup") and morph(LOCALE,m.group(1)+m.group(2), r"(?u)st:\\w+") == morph(LOCALE,m.group(1)+m.group(3), r"(?u)st:\\w+") and not morph(LOCALE,m.group(1)+m.group(3), "pa:") and not morph(LOCALE,m.group(1)+m.group(2), "pa:")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])([-\\w]{4})([-\\w]+)[;,:]?(?: [-\u2013\\w\u201e\u201d]+[;,:]?)* \\1(\\w+)(?![-\\w\u2013\xad])', u'\\1\\2', u'T\xfalzott sz\xf3ism\xe9tl\xe9s?', u'option(LOCALE,"dup3") and option(LOCALE,"dup2") and morph(LOCALE,m.group(1)+m.group(2), r"(?u)st:\\w+") == morph(LOCALE,m.group(1)+m.group(3), r"(?u)st:\\w+") and not morph(LOCALE,m.group(1)+m.group(3), "pa:") and not morph(LOCALE,m.group(1)+m.group(2), "pa:")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])[-\\w]*f[fil][-\\w]*(?![-\\w\u2013\xad])', u'=m.group(0).replace("ffi",u"\ufb03").replace("ffl",u"\ufb04").replace("ff",u"\ufb00").replace("fi",u"\ufb01").replace("fl",u"\ufb02")', u'A sz\xf3 unicode-os f-ligat\xfar\xe1kkal:', u'option(LOCALE,"ligature")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])[-\\w]*(\ufb03|\ufb04|\ufb00|\ufb01|\ufb02)[-\\w]*(?![-\\w\u2013\xad])', u'=m.group(0).replace(u"\ufb03","ffi").replace(u"\ufb04","ffl").replace(u"\ufb00","ff").replace(u"\ufb01","fi").replace(u"\ufb02","fl")', u'A sz\xf3 unicode-os f-ligat\xfar\xe1k n\xe9lk\xfcl:', u'option(LOCALE,"noligature")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])1/2((-\\w+)?)(?![-\\w\u2013\xad])', u'\xbd\\1', u'Tipogr\xe1fiai jel:', u'option(LOCALE,"frac")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])1/3((-\\w+)?)(?![-\\w\u2013\xad])', u'\u2153\\1', u'Tipogr\xe1fiai jel:', u'option(LOCALE,"frac")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])1/4((-\\w+)?)(?![-\\w\u2013\xad])', u'\xbc\\1', u'Tipogr\xe1fiai jel:', u'option(LOCALE,"frac")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])3/4((-\\w+)?)(?![-\\w\u2013\xad])', u'\xbe\\1', u'Tipogr\xe1fiai jel:', u'option(LOCALE,"frac")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])2/3((-\\w+)?)(?![-\\w\u2013\xad])', u'\u2154\\1', u'Tipogr\xe1fiai jel:', u'option(LOCALE,"frac")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])1/5((-\\w+)?)(?![-\\w\u2013\xad])', u'\u2155\\1', u'Tipogr\xe1fiai jel:', u'option(LOCALE,"frac")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])1/6((-\\w+)?)(?![-\\w\u2013\xad])', u'\u2159\\1', u'Tipogr\xe1fiai jel:', u'option(LOCALE,"frac")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])5/6((-\\w+)?)(?![-\\w\u2013\xad])', u'\u215a\\1', u'Tipogr\xe1fiai jel:', u'option(LOCALE,"frac")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])1/8((-\\w+)?)(?![-\\w\u2013\xad])', u'\u215b\\1', u'Tipogr\xe1fiai jel:', u'option(LOCALE,"frac")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])3/8((-\\w+)?)(?![-\\w\u2013\xad])', u'\u215c\\1', u'Tipogr\xe1fiai jel:', u'option(LOCALE,"frac")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])5/8((-\\w+)?)(?![-\\w\u2013\xad])', u'\u215d\\1', u'Tipogr\xe1fiai jel:', u'option(LOCALE,"frac")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])7/8((-\\w+)?)(?![-\\w\u2013\xad])', u'\u215e\\1', u'Tipogr\xe1fiai jel:', u'option(LOCALE,"frac")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])1/(\\d{1,3})((-\\w+)?)(?![-\\w\u2013\xad])', u'= u"\u215f" + m.group(1).replace("0", u"\u2080").replace("1", u"\u2081").replace("2", u"\u2082").replace("3", u"\u2083").replace("4", u"\u2084").replace("5", u"\u2085").replace("6", u"\u2086").replace("7", u"\u2087").replace("8", u"\u2088").replace("9", u"\u2089") + m.group(2)', u'T\xf6rt tipogr\xe1fiai jelekkel:', u'option(LOCALE,"frac")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])([2-9]|\\d{2,3})/(\\d{1,3})((-\\w+)?)(?![-\\w\u2013\xad])', u'= m.group(1).replace("0", u"\u2070").replace("1", u"\xb9").replace("2", u"\xb2").replace("3", u"\xb3").replace("4", u"\u2074").replace("5", u"\u2075").replace("6", u"\u2076").replace("7", u"\u2077").replace("8", u"\u2078").replace("9", u"\u2079") + u"\u2044" + m.group(2).replace("0", u"\u2080").replace("1", u"\u2081").replace("2", u"\u2082").replace("3", u"\u2083").replace("4", u"\u2084").replace("5", u"\u2085").replace("6", u"\u2086").replace("7", u"\u2087").replace("8", u"\u2088").replace("9", u"\u2089") + m.group(3)', u'T\xf6rt tipogr\xe1fiai jelekkel:', u'option(LOCALE,"frac")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])[\xb5mck]?m[23](-\\w+)?(?![-\\w\u2013\xad])', u'=m.group(0).replace("2", u"\xb2").replace("3", u"\xb3")', u'Index tipogr\xe1fiai jellel:', u'option(LOCALE,"idx")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])(Ca(CO3|SO4)|CO2|(H2|Na2)(CO3|O|SO4)|[HNO]2|HNO3|Fe2O3|KMnO4|NO2|SiO2|SO[23])(-\\w+)?(?![-\\w\u2013\xad])', u'=m.group(0).replace("2", u"\u2082").replace("3", u"\u2083").replace("4", u"\u2084")', u'Index tipogr\xe1fiai jellel.', u'option(LOCALE,"idx")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])kedvel(?![-\\w\u2013\xad])', u'kedvvel', u'Sz\xf3t\xe9veszt\xe9s?', u'wordmin(s[:m.start()],1).lower() == u"j\xf3" or wordmin(s[:m.start()],1).lower() == "rossz"', 0], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:,\\d+)?) (\xb0F(-\\w+)?)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "F", "C", " " + m.group(2).replace("F", "C"))', u'V\xe1lt\xe1s SI m\xe9rt\xe9kegys\xe9gre', u'option(LOCALE,"SI")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:,\\d+)?) (\u2109(-\\w+)?)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "F", "C", " \xb0C" + m.group(2)[1:])', u'V\xe1lt\xe1s SI m\xe9rt\xe9kegys\xe9gre', u'option(LOCALE,"SI")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d(?:,\\d+)?) (l\xe1b\\w*)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "ft", "cm", " " + generate(LOCALE,u"centim\xe9ter", m.group(2))[0]) + "|" + measurement(m.group(1), "ft", "m", " " + generate(LOCALE,u"m\xe9ter", m.group(2))[0])', u'V\xe1lt\xe1s SI m\xe9rt\xe9kegys\xe9gre', u'option(LOCALE,"SI") and stem(LOCALE,m.group(2)) == [u"l\xe1b"]', 0], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d\\d+(?:,\\d+)?) (l\xe1b\\w*)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "ft", "m", " " + generate(LOCALE,u"m\xe9ter", m.group(2))[0])', u'V\xe1lt\xe1s SI m\xe9rt\xe9kegys\xe9gre', u'option(LOCALE,"SI") and stem(LOCALE,m.group(2)) == [u"l\xe1b"]', 0], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:,\\d+)?) (h\xfcvelyk\\w*)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "in", "cm", " " + generate(LOCALE,u"centim\xe9ter", m.group(2))[0])', u'V\xe1lt\xe1s SI m\xe9rt\xe9kegys\xe9gre', u'option(LOCALE,"SI")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:,\\d+)?) (m\xe9rf\xf6ld\\w*)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "mi", "km", " " + generate(LOCALE,u"kilom\xe9ter", m.group(2))[0])', u'V\xe1lt\xe1s SI m\xe9rt\xe9kegys\xe9gre', u'option(LOCALE,"SI")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:,\\d+)?) (yard\\w*)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "yd", "m", " " + generate(LOCALE,u"m\xe9ter", m.group(2))[0])', u'V\xe1lt\xe1s SI m\xe9rt\xe9kegys\xe9gre', u'option(LOCALE,"SI")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:,\\d+)?) (font (s\xfaly\xfa\\w*))(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "lbm", "kg", " " + generate(LOCALE,"kilogramm", u"szomor" + m.group(3)[4:])[0])', u'V\xe1lt\xe1s SI m\xe9rt\xe9kegys\xe9gre', u'option(LOCALE,"SI")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:,\\d+)?) (gallon\\w*)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "gal", "l", " " + generate(LOCALE,"liter", m.group(2))[0])', u'V\xe1lt\xe1s SI m\xe9rt\xe9kegys\xe9gre', u'option(LOCALE,"SI")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:,\\d+)?) (pint\\w*)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "uk_pt", "dl", " " + generate(LOCALE,"deciliter", m.group(2))[0]) + "|" + measurement(m.group(1), "us_pt", "dl", " " + generate(LOCALE,"deciliter", m.group(2))[0])', u'V\xe1lt\xe1s SI m\xe9rt\xe9kegys\xe9gre (angol \xe9s amerikai pint)', u'option(LOCALE,"SI")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])adat\xfat(?![-\\w\u2013\xad])', u'ada\xadt\xfat|adat\xad\xfat', u'Elv\xe1laszt\xe1s:', u'option(LOCALE,"hyphen")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])felett(em|ed|e|\xfcnk|\xfck)(?![-\\w\u2013\xad])', u'fe\xadlet\xadt\\1|fel\xadet\xadt\\1', u'Elv\xe1laszt\xe1s:', u'option(LOCALE,"hyphen")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])felettetek(?![-\\w\u2013\xad])', u'fe\xadlet\xadte\xadtek|fel\xadet\xadte\xadtek', u'Elv\xe1laszt\xe1s:', u'option(LOCALE,"hyphen")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])f\xf6l\xfcl(?![-\\w\u2013\xad])', u'f\xf6\xadl\xfcl|f\xf6l\xad\xfcl', u'Elv\xe1laszt\xe1s:', u'option(LOCALE,"hyphen")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])g\xe9pelem(?![-\\w\u2013\xad])', u'g\xe9\xadpe\xadlem|g\xe9p\xadelem', u'Elv\xe1laszt\xe1s:', u'option(LOCALE,"hyphen")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])kar\xf3ra(?![-\\w\u2013\xad])', u'kar\xad\xf3ra|ka\xadr\xf3\xadra', u'Elv\xe1laszt\xe1s:', u'option(LOCALE,"hyphen")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])meg\xe1s(?![-\\w\u2013\xad])', u'me\xadg\xe1s|meg\xad\xe1s', u'Elv\xe1laszt\xe1s:', u'option(LOCALE,"hyphen")', 0], [u'(?u)(?<![-\\w\u2013.,\xad])megint(?![-\\w\u2013\xad])', u'me\xadgint|meg\xadint', u'Elv\xe1laszt\xe1s:', u'option(LOCALE,"hyphen")', 0]]
+
diff --git a/dictionaries/hu_HU/pythonpath/lightproof_impl_hu_HU.py b/dictionaries/hu_HU/pythonpath/lightproof_impl_hu_HU.py
index a7ae09c..afbde77 100644
--- a/dictionaries/hu_HU/pythonpath/lightproof_impl_hu_HU.py
+++ b/dictionaries/hu_HU/pythonpath/lightproof_impl_hu_HU.py
@@ -1,6 +1,248 @@
# -*- encoding: UTF-8 -*-
+import uno, re, sys, os, traceback
+from string import join
+from com.sun.star.text.TextMarkupType import PROOFREADING
+from com.sun.star.beans import PropertyValue
+
pkg = "hu_HU"
lang = "hu_HU"
locales = {'hu-HU': ['hu', 'HU', '']}
-version = "1.4"
-author = ""
+version = "1.4.4"
+author = "László Németh"
+name = "Lightproof grammar checker (magyar)"
+
+import lightproof_handler_hu_HU
+
+# loaded rules (check for Update mechanism of the editor)
+try:
+ langrule
+except NameError:
+ langrule = {}
+
+# ignored rules
+ignore = {}
+
+# cache for morphogical analyses
+analyses = {}
+stems = {}
+suggestions = {}
+
+# assign Calc functions
+calcfunc = None
+
+# check settings
+def option(lang, opt):
+ return lightproof_handler_hu_HU.get_option(lang.Language + "_" + lang.Country, opt)
+
+# filtering affix fields (ds, is, ts etc.)
+def onlymorph(st):
+ if st != None:
+ st = re.sub(r"^.*(st:|po:)", r"\\1", st) # keep last word part
+ st = re.sub(r"\\b(?=[dit][sp]:)","@", st) # and its affixes
+ st = re.sub(r"(?<!@)\\b\w\w:\w+","", st).replace('@','').strip()
+ return st
+
+# if the pattern matches all analyses of the input word,
+# return the last matched substring
+def _morph(rLoc, word, pattern, all, onlyaffix):
+ global analyses
+ if not word:
+ return None
+ if word not in analyses:
+ x = spellchecker.spell(u"<?xml?><query type='analyze'><word>" + word + "</word></query>", rLoc, ())
+ if not x:
+ return None
+ t = x.getAlternatives()
+ if not t:
+ t = [""]
+ analyses[word] = t[0].split("</a>")[:-1]
+ a = analyses[word]
+ result = None
+ p = re.compile(pattern)
+ for i in a:
+ if onlyaffix:
+ i = onlymorph(i)
+ result = p.search(i)
+ if result:
+ result = result.group(0)
+ if not all:
+ return result
+ elif all:
+ return None
+ return result
+
+def morph(rLoc, word, pattern, all=True):
+ return _morph(rLoc, word, pattern, all, False)
+
+def affix(rLoc, word, pattern, all=True):
+ return _morph(rLoc, word, pattern, all, True)
+
+def spell(rLoc, word):
+ if not word:
+ return None
+ return spellchecker.isValid(word, rLoc, ())
+
+# get the tuple of the stem of the word or an empty array
+def stem(rLoc, word):
+ global stems
+ if not word:
+ return []
+ if not word in stems:
+ x = spellchecker.spell(u"<?xml?><query type='stem'><word>" + word + "</word></query>", rLoc, ())
+ if not x:
+ return []
+ t = x.getAlternatives()
+ if not t:
+ t = []
+ stems[word] = list(t)
+ return stems[word]
+
+# get the tuple of the morphological generation of a word or an empty array
+def generate(rLoc, word, example):
+ if not word:
+ return []
+ x = spellchecker.spell(u"<?xml?><query type='generate'><word>" + word + "</word><word>" + example + "</word></query>", rLoc, ())
+ if not x:
+ return []
+ t = x.getAlternatives()
+ if not t:
+ t = []
+ return list(t)
+
+# get suggestions
+def suggest(rLoc, word):
+ global suggestions
+ if not word:
+ return word
+ if word not in suggestions:
+ x = spellchecker.spell("_" + word, rLoc, ())
+ if not x:
+ return word
+ t = x.getAlternatives()
+ suggestions[word] = join(t, "\\n")
+ return suggestions[word]
+
+# get the nth word of the input string or None
+def word(s, n):
+ a = re.match("(?u)( [-.\w%%]+){" + str(n-1) + "}( [-.\w%%]+)", s)
+ if not a:
+ return ''
+ return a.group(2)[1:]
+
+# get the (-)nth word of the input string or None
+def wordmin(s, n):
+ a = re.search("(?u)([-.\w%%]+ )([-.\w%%]+ ){" + str(n-1) + "}$", s)
+ if not a:
+ return ''
+ return a.group(1)[:-1]
+
+def calc(funcname, par):
+ global calcfunc
+ global SMGR
+ if calcfunc == None:
+ calcfunc = SMGR.createInstance( "com.sun.star.sheet.FunctionAccess")
+ if calcfunc == None:
+ return None
+ return calcfunc.callFunction(funcname, par)
+
+def proofread( nDocId, TEXT, LOCALE, nStartOfSentencePos, nSuggestedSentenceEndPos, rProperties ):
+ global ignore
+ aErrs = []
+ s = TEXT[nStartOfSentencePos:nSuggestedSentenceEndPos]
+ for i in get_rule(LOCALE).dic:
+ # 0: regex, 1: replacement, 2: message, 3: condition, 4: ngroup, (5: oldline), 6: case sensitive ?
+ if i[0] and not str(i[0]) in ignore:
+ for m in i[0].finditer(s):
+ try:
+ if not i[3] or eval(i[3]):
+ aErr = uno.createUnoStruct( "com.sun.star.linguistic2.SingleProofreadingError" )
+ aErr.nErrorStart = nStartOfSentencePos + m.start(i[4]) # nStartOfSentencePos
+ aErr.nErrorLength = m.end(i[4]) - m.start(i[4])
+ aErr.nErrorType = PROOFREADING
+ aErr.aRuleIdentifier = str(i[0])
+ iscap = (i[-1] and m.group(i[4])[0:1].isupper())
+ if i[1][0:1] == "=":
+ aErr.aSuggestions = tuple(cap(eval(i[1][1:]).replace('|', "\n").split("\n"), iscap, LOCALE))
+ elif i[1] == "_":
+ aErr.aSuggestions = ()
+ else:
+ aErr.aSuggestions = tuple(cap(m.expand(i[1]).replace('|', "\n").split("\n"), iscap, LOCALE))
+ comment = i[2]
+ if comment[0:1] == "=":
+ comment = eval(comment[1:])
+ else:
+ comment = m.expand(comment)
+ aErr.aShortComment = comment.replace('|', '\n').replace('\\n', '\n').split("\n")[0].strip()
+ aErr.aFullComment = comment.replace('|', '\n').replace('\\n', '\n').split("\n")[-1].strip()
+ if "://" in aErr.aFullComment:
+ p = PropertyValue()
+ p.Name = "FullCommentURL"
+ p.Value = aErr.aFullComment
+ aErr.aFullComment = aErr.aShortComment
+ aErr.aProperties = (p,)
+ else:
+ aErr.aProperties = ()
+ aErrs = aErrs + [aErr]
+ except Exception as e:
+ if len(i) == 7:
+ raise Exception(str(e), i[5])
+ raise
+
+ return tuple(aErrs)
+
+def cap(a, iscap, rLoc):
+ if iscap:
+ for i in range(0, len(a)):
+ if a[i][0:1] == "i":
+ if rLoc.Language == "tr" or rLoc.Language == "az":
+ a[i] = u"\u0130" + a[i][1:]
+ elif a[i][1:2] == "j" and rLoc.Language == "nl":
+ a[i] = "IJ" + a[i][2:]
+ else:
+ a[i] = "I" + a[i][1:]
+ else:
+ a[i] = a[i].capitalize()
+ return a
+
+def compile_rules(dic):
+ # compile regular expressions
+ for i in dic:
+ try:
+ if re.compile("[(][?]iu[)]").match(i[0]):
+ i += [True]
+ i[0] = re.sub("[(][?]iu[)]", "(?u)", i[0])
+ else:
+ i += [False]
+ i[0] = re.compile(i[0])
+ except:
+ if 'PYUNO_LOGLEVEL' in os.environ:
+ print("Lightproof: bad regular expression: ", traceback.format_exc())
+ i[0] = None
+
+def get_rule(loc):
+ try:
+ return langrule[pkg]
+ except:
+ langrule[pkg] = __import__("lightproof_" + pkg)
+ compile_rules(langrule[pkg].dic)
+ return langrule[pkg]
+
+def get_path():
+ return os.path.join(os.path.dirname(sys.modules[__name__].__file__), __name__ + ".py")
+
+# [code]
+
+
+abbrev=re.compile(ur"(?i)\\b([a-z\xf6\xfc\xf3\u0151\xfa\xe9\xe1\u0171\xed\xd6\xdc\xd3\u0150\xda\xc9\xc1\u0170\xcd]|\xc1e|\xc1ht|AkH|al|\xe1lt|\xe1pr|aug|Avtv|bek|Bp|br|bt|Btk|cca|ci(i|ii|v|x)?|cl(i|ii|iii|iv|ix|v|vi|vii|viii|x|xi|xii|xiii|xiv|xix|xv|xvi|xvii|xviii|xx|xxi|xxii|xxiii|xxiv|xxix|xxv|xxvi|xxvii|xxviii|xxx|xxxi|xxxii|xxxiii|xxxiv|xxxix|xxxv|xxxvi|xxxvii|xxxviii)?|Co|cv(i|ii|iii)?|cx(c|ci|cii|ciii|civ|cix|cv|cvi|cvii|cviii|i|ii|iii|iv|ix|l|li|lii|liii|liv|lix|lv|lvi|lvii|lviii|v|vi|vii|viii|x|xi|xii|xiii|xiv|xix|xv|xvi|xvii|xviii|xx|xxi|xxii|xxiii|xxiv|xxix|xxv|xxvi|xxvii|xxviii)?|cs|Csjt|Cstv|cs\xfct|dec|dk|dny|dr|du|dz(s)?|egy|\xe9k|\xc9Ksz|em|\xe9ny|\xc9pt|\xe9rk|etc|Etv|e\xfc|ev|\xe9vf|febr|felv|Flt|ford|f\u0151isk|fsz(la|t)?|Ftv|gimn|g\xf6r|gr|Gt|gy|Gyvt|habil|hg|hiv|Hjt|honv|Hpt|hrsz|hsz|Hszt|htb|id|ifj|ig(h)?|ii(i)?|ill|Inc|ind|isk|iv|ix|izr|jan|jegyz|j\xfal|j\xfan|kat|kb|Kbt|ker|kft|kgy|kht|kir|kiv|Kjt|kk(t)?|koll|korm|k\xf6v|kp|Kr|krt|Kt(v)?|ld|li(i|ii|v|x)?|Ltd|ltp|Ltv|luth|lv(i|ii|iii)?|lx(i|ii|iii|iv|ix|v|vi|vii|viii|x|xi|xii|xiii|xiv|xix|xv|xvi|xvii|xviii|xx|xxi|xxii|xxiii|xxiv|xxix|xxv|xxvi|xxvii|xxviii)?|ly|m\xe1j|m\xe1rc|mat|max|mb|megh|megj|MHSz|min|mk|Mo|Mt|NB|nov|ny(\xe1)?|Nyilv|nyrt|okl|okt|olv|op|orsz|ort|ov(h)?|\xf6ssz|\xd6tv|\xf6zv|Pf|pl(d)?|prof|prot|Ptk|pu|ref|rk(p)?|r\xf3m|r\xf6v|rt|sgt|spec|stb|sz(ept|erk)?|Szjt|szoc|Szt(v)?|sz\xfcl|Tbj|tc|tel|tkp|tszf|tvr|ty|ua|ui|\xfam|\xfan|uo|Ve|Vhr|vi(i|ii)?|v\xf6|vsz|Vt(v)?|xc(i|ii|iii|iv|ix|v|vi|vii|viii)?|xi(i|ii|v|x)?|xl(i|ii|iii|iv|ix|v|vi|vii|viii)?|xv(i|ii|iii)?|xx(i|ii|iii|iv|ix|v|vi|vii|viii|x|xi|xii|xiii|xiv|xix|xv|xvi|xvii|xviii)?|zrt)\\.")
+
+# pattern for paragraph checking
+paralcap = re.compile(u"(?u)^[a-z\xf6\xfc\xf3\u0151\xfa\xe9\xe1\u0171\xed].*[.?!] [A-Z\xd6\xdc\xd3\u0150\xda\xc9\xc1\u0170\xcd].*[.?!][)\u201d]?$")
+
+
+def measurement(mnum, min, mout, mstr):
+ m = calc("CONVERT_ADD", (float(mnum.replace(",", ".").replace(u"\u2212", "-")), min, mout))
+ a = list(set([str(calc("ROUND", (m, 0)))[:-2], str(calc("ROUND", (m, 1))), str(calc("ROUND", (m, 2))), str(m)])) # remove duplicated rounded items
+ a.sort(lambda x, y: len(x) - len(y)) # sort by string length
+ return join(a, mstr + "|").replace(".", ",").replace("-", u"\u2212") + mstr
+
+
diff --git a/dictionaries/ru_RU/Lightproof.py b/dictionaries/ru_RU/Lightproof.py
index f31dca8..95c56dd 100644
--- a/dictionaries/ru_RU/Lightproof.py
+++ b/dictionaries/ru_RU/Lightproof.py
@@ -1,235 +1,26 @@
# -*- encoding: UTF-8 -*-
# Lightproof grammar checker for LibreOffice and OpenOffice.org
-# http://launchpad.net/lightproof
-# version 1.4.3 (2011-12-05)
-#
-# 2009-2011 (c) László Németh (nemeth at numbertext org), license: MPL 1.1 / GPLv3+ / LGPLv3+
+# 2009-2012 (c) László Németh (nemeth at numbertext org), license: MPL 1.1 / GPLv3+ / LGPLv3+
-import uno, unohelper, sys, traceback, re
+import uno, unohelper, os, sys, traceback
from lightproof_impl_ru_RU import locales
from lightproof_impl_ru_RU import pkg
+import lightproof_impl_ru_RU
import lightproof_handler_ru_RU
-from string import join
from com.sun.star.linguistic2 import XProofreader, XSupportedLocales
from com.sun.star.linguistic2 import ProofreadingResult, SingleProofreadingError
from com.sun.star.lang import XServiceInfo, XServiceName, XServiceDisplayName
from com.sun.star.lang import Locale
-from com.sun.star.text.TextMarkupType import PROOFREADING
-from com.sun.star.beans import PropertyValue
-
-# loaded rules
-langrule = {}
-# ignored rules
-ignore = {}
-
-# cache for morphogical analyses
-analyses = {}
-stems = {}
-suggestions = {}
-
-# assign Calc functions
-calcfunc = None
-
-# check settings
-def option(lang, opt):
- return lightproof_handler_ru_RU.get_option(lang.Language + "_" + lang.Country, opt)
-
-# filtering affix fields (ds, is, ts etc.)
-def onlymorph(st):
- if st != None:
- st = re.sub(r"^.*(st:|po:)", r"\1", st) # keep last word part
- st = re.sub(r"\b(?=[dit][sp]:)","@", st) # and its affixes
- st = re.sub(r"(?<!@)\b\w\w:\w+","", st).replace('@','').strip()
- return st
-
-# if the pattern matches all analyses of the input word,
-# return the last matched substring
-def _morph(rLoc, word, pattern, all, onlyaffix):
- global analyses
- if word == None:
- return None
- if word not in analyses:
- x = spellchecker.spell(u"<?xml?><query type='analyze'><word>" + word + "</word></query>", rLoc, ())
- if not x:
- return None
- t = x.getAlternatives()
- if not t:
- t = [""]
- analyses[word] = t[0]
- a = analyses[word].split("</a>")[:-1]
- result = None
- p = re.compile(pattern)
- for i in a:
- if onlyaffix:
- i = onlymorph(i)
- result = p.search(i)
- if result:
- result = result.group(0)
- if not all:
- return result
- elif all:
- return None
- return result
-
-def morph(rLoc, word, pattern, all=True):
- return _morph(rLoc, word, pattern, all, False)
-
-def affix(rLoc, word, pattern, all=True):
- return _morph(rLoc, word, pattern, all, True)
-
-def spell(rLoc, word):
- if word == None:
- return None
- return spellchecker.isValid(word, rLoc, ())
-
-# get the tuple of the stem of the word or an empty array
-def stem(rLoc, word):
- global stems
- if word == None:
- return []
- if not word in stems:
- x = spellchecker.spell(u"<?xml?><query type='stem'><word>" + word + "</word></query>", rLoc, ())
- if not x:
- return []
- t = x.getAlternatives()
- if not t:
- t = []
- stems[word] = list(t)
- return stems[word]
-
-# get the tuple of the morphological generation of a word or an empty array
-def generate(rLoc, word, example):
- if word == None:
- return []
- x = spellchecker.spell(u"<?xml?><query type='generate'><word>" + word + "</word><word>" + example + "</word></query>", rLoc, ())
- if not x:
- return []
- t = x.getAlternatives()
- if not t:
- t = []
- return list(t)
-
-# get suggestions
-def suggest(rLoc, word):
- global suggestions
- if word == None:
- return word
- if word not in suggestions:
- x = spellchecker.spell("_" + word, rLoc, ())
- if not x:
- return word
- t = x.getAlternatives()
- suggestions[word] = join(t, "\n")
- return suggestions[word]
-
-# get the nth word of the input string or None
-def word(s, n):
- a = re.match("(?u)( [-.\w%]+){" + str(n-1) + "}( [-.\w%]+)", s)
- if not a:
- return None
- return a.group(2)[1:]
-
-# get the (-)nth word of the input string or None
-def wordmin(s, n):
- a = re.search("(?u)([-.\w%]+ )([-.\w%]+ ){" + str(n-1) + "}$", s)
- if not a:
- return None
- return a.group(1)[:-1]
-
-def calc(funcname, par):
- global calcfunc
- global SMGR
- if calcfunc == None:
- calcfunc = SMGR.createInstance( "com.sun.star.sheet.FunctionAccess")
- if calcfunc == None:
- return None
- return calcfunc.callFunction(funcname, par)
-
-def proofread( nDocId, TEXT, LOCALE, nStartOfSentencePos, nSuggestedSentenceEndPos, rProperties ):
- global ignore
- aErrs = []
- s = TEXT[nStartOfSentencePos:nSuggestedSentenceEndPos]
- for i in get_rule(LOCALE):
- if i[0] and not str(i[0]) in ignore:
- for m in i[0].finditer(s):
- if not i[3] or eval(i[3]):
- aErr = uno.createUnoStruct( "com.sun.star.linguistic2.SingleProofreadingError" )
- aErr.nErrorStart = nStartOfSentencePos + m.start(0) # nStartOfSentencePos
- aErr.nErrorLength = m.end(0) - m.start(0)
- aErr.nErrorType = PROOFREADING
- aErr.aRuleIdentifier = str(i[0])
- iscap = (i[4] and m.group(0)[0:1].isupper())
- if i[1][0:1] == "=":
- aErr.aSuggestions = tuple(cap(eval(i[1][1:]).split("\n"), iscap, LOCALE))
- else:
- aErr.aSuggestions = tuple(cap(m.expand(i[1]).split("\n"), iscap, LOCALE))
- comment = i[2]
- if comment[0:1] == "=":
- comment = eval(comment[1:])
- aErr.aShortComment = comment.split("\\n")[0].strip()
- aErr.aFullComment = comment.split("\\n")[-1].strip()
- if "://" in aErr.aFullComment:
- p = PropertyValue()
- p.Name = "FullCommentURL"
- p.Value = aErr.aFullComment
- aErr.aFullComment = aErr.aShortComment
- aErr.aProperties = (p,)
- else:
- aErr.aProperties = ()
- aErrs = aErrs + [aErr]
- return tuple(aErrs)
-
-def cap(a, iscap, rLoc):
- if iscap:
- for i in range(0, len(a)):
- if a[i][0:1] == "i":
- if rLoc.Language == "tr" or rLoc.Language == "az":
- a[i] = u"\u0130" + a[i][1:]
- elif a[i][1:2] == "j" and rLoc.Language == "nl":
- a[i] = "IJ" + a[i][2:]
- else:
- a[i] = "I" + a[i][1:]
- else:
- a[i] = a[i].capitalize()
- return a
-
-def get_rule(rLocale):
- module = rLocale.Language
- if rLocale.Country != "":
- module = module + "_" + rLocale.Country
- try:
- return langrule[module]
- except:
- try:
- module = rLocale.Language
- return langrule[module]
- except:
- try:
- d = __import__("lightproof_" + pkg)
- except:
- print "Error: missing language data: " + module
- return None
- # compile regular expressions
- for i in d.dic:
- try:
- if re.compile("[(][?]iu[)]").match(i[0]):
- i += [True]
- i[0] = re.sub("[(][?]iu[)]", "(?u)", i[0])
- else:
- i += [False]
- i[0] = re.compile(i[0])
- except:
- print "Lightproof: bad rule -- ", i[0]
- i[0] = None
- langrule[module] = d.dic
- return langrule[module]
+# reload in obj.reload in Python 3
+try:
+ from obj import reload
+except:
+ pass
class Lightproof( unohelper.Base, XProofreader, XServiceInfo, XServiceName, XServiceDisplayName, XSupportedLocales):
def __init__( self, ctx, *args ):
- global spellchecker
- global SMGR
self.ctx = ctx
self.ServiceName = "com.sun.star.linguistic2.Proofreader"
self.ImplementationName = "org.openoffice.comp.pyuno.Lightproof." + pkg
@@ -240,8 +31,9 @@ class Lightproof( unohelper.Base, XProofreader, XServiceInfo, XServiceName, XSer
self.locales += [Locale(l[0], l[1], l[2])]
self.locales = tuple(self.locales)
currentContext = uno.getComponentContext()
- SMGR = currentContext.ServiceManager
- spellchecker = SMGR.createInstanceWithContext("com.sun.star.linguistic2.SpellChecker", currentContext)
+ lightproof_impl_ru_RU.SMGR = currentContext.ServiceManager
+ lightproof_impl_ru_RU.spellchecker = \
+ lightproof_impl_ru_RU.SMGR.createInstanceWithContext("com.sun.star.linguistic2.SpellChecker", currentContext)
lightproof_handler_ru_RU.load(currentContext)
# XServiceName method implementations
@@ -250,13 +42,13 @@ class Lightproof( unohelper.Base, XProofreader, XServiceInfo, XServiceName, XSer
# XServiceInfo method implementations
def getImplementationName (self):
- return self.ImplementationName
+ return self.ImplementationName
def supportsService(self, ServiceName):
- return (ServiceName in self.SupportedServiceNames)
+ return (ServiceName in self.SupportedServiceNames)
def getSupportedServiceNames (self):
- return self.SupportedServiceNames
+ return self.SupportedServiceNames
# XSupportedLocales
def hasLocale(self, aLocale):
@@ -282,6 +74,48 @@ class Lightproof( unohelper.Base, XProofreader, XServiceInfo, XServiceName, XSer
aRes.aLocale = rLocale
aRes.nStartOfSentencePosition = nStartOfSentencePos
aRes.nStartOfNextSentencePosition = nSuggestedSentenceEndPos
+ aRes.aProperties = ()
+ aRes.xProofreader = self
+ aRes.aErrors = ()
+ if len(rProperties) > 0 and rProperties[0].Name == "Update":
+ try:
+ import lightproof_compile_ru_RU
+ try:
+ code = lightproof_compile_ru_RU.c(rProperties[0].Value, rLocale.Language, True)
+ except Exception as e:
+ aRes.aText, aRes.nStartOfSentencePosition = e
+ return aRes
+ path = lightproof_impl_ru_RU.get_path()
+ f = open(path.replace("_impl", ""), "w")
+ f.write("dic = %s" % code["rules"])
+ f.close()
+ if pkg in lightproof_impl_ru_RU.langrule:
+ mo = lightproof_impl_ru_RU.langrule[pkg]
+ reload(mo)
+ lightproof_impl_ru_RU.compile_rules(mo.dic)
+ lightproof_impl_ru_RU.langrule[pkg] = mo
+ if "code" in code:
+ f = open(path, "r")
+ ft = f.read()
+ f.close()
+ f = open(path, "w")
+ f.write(ft[:ft.find("# [code]") + 8] + "\n" + code["code"])
+ f.close()
+ try:
+ reload(lightproof_impl_ru_RU)
+ except Exception as e:
+ aRes.aText = e.args[0]
+ if e.args[1][3] == "": # "expected an indented block" (end of file)
+ aRes.nStartOfSentencePosition = len(rText.split("\n"))
+ else:
+ aRes.nStartOfSentencePosition = rText.split("\n").index(e.args[1][3][:-1]) + 1
+ return aRes
+ aRes.aText = ""
+ return aRes
+ except:
+ if 'PYUNO_LOGLEVEL' in os.environ:
+ print(traceback.format_exc())
+
l = rText[nSuggestedSentenceEndPos:nSuggestedSentenceEndPos+1]
while l == " ":
aRes.nStartOfNextSentencePosition = aRes.nStartOfNextSentencePosition + 1
@@ -291,32 +125,31 @@ class Lightproof( unohelper.Base, XProofreader, XServiceInfo, XServiceName, XSer
aRes.nBehindEndOfSentencePosition = aRes.nStartOfNextSentencePosition
try:
- aRes.aErrors = proofread( nDocId, rText, rLocale, \
+ aRes.aErrors = lightproof_impl_ru_RU.proofread( nDocId, rText, rLocale, \
nStartOfSentencePos, aRes.nBehindEndOfSentencePosition, rProperties)
- except:
- # traceback.print_exc(file=sys.stdout)
- aRes.aErrors = ()
- aRes.aProperties = ()
- aRes.xProofreader = self
+ except Exception as e:
+ if len(rProperties) > 0 and rProperties[0].Name == "Debug" and len(e.args) == 2:
+ aRes.aText, aRes.nStartOfSentencePosition = e
+ else:
+ if 'PYUNO_LOGLEVEL' in os.environ:
+ print(traceback.format_exc())
return aRes
def ignoreRule(self, rid, aLocale):
- global ignore
- ignore[rid] = 1
+ lightproof_impl_ru_RU.ignore[rid] = 1
def resetIgnoreRules(self):
- global ignore
- ignore = {}
+ lightproof_impl_ru_RU.ignore = {}
# XServiceDisplayName
def getServiceDisplayName(self, aLocale):
- return "Lightproof Grammar Checker (" + pkg + ")"
+ return lightproof_impl_ru_RU.name
g_ImplementationHelper = unohelper.ImplementationHelper()
g_ImplementationHelper.addImplementation( Lightproof, \
- "org.openoffice.comp.pyuno.Lightproof." + pkg,
- ("com.sun.star.linguistic2.Proofreader",),)
+ "org.openoffice.comp.pyuno.Lightproof." + pkg,
+ ("com.sun.star.linguistic2.Proofreader",),)
g_ImplementationHelper.addImplementation( lightproof_handler_ru_RU.LightproofOptionsEventHandler, \
- "org.openoffice.comp.pyuno.LightproofOptionsEventHandler." + pkg,
- ("com.sun.star.awt.XContainerWindowEventHandler",),)
+ "org.openoffice.comp.pyuno.LightproofOptionsEventHandler." + pkg,
+ ("com.sun.star.awt.XContainerWindowEventHandler",),)
diff --git a/dictionaries/ru_RU/README_Lightproof_ru_RU.txt b/dictionaries/ru_RU/README_Lightproof_ru_RU.txt
index 1744797..caa4fff 100644
--- a/dictionaries/ru_RU/README_Lightproof_ru_RU.txt
+++ b/dictionaries/ru_RU/README_Lightproof_ru_RU.txt
@@ -3,5 +3,5 @@ Russian grammar checker
(developed by the Lightproof grammar checker extension generator,
see http://launchpad.net/lightproof)
-2009, 2011 (c) Yakov Reztsov <yr at myooo dot ru>, license: MPL 1.1 / GPL / LGPL
+2009, 2011, 2012 (c) Yakov Reztsov <yr at myooo dot ru>, license: MPL 1.1 / GPL / LGPL
diff --git a/dictionaries/ru_RU/dialog/registry/schema/org/openoffice/Lightproof_ru_RU.xcs b/dictionaries/ru_RU/dialog/registry/schema/org/openoffice/Lightproof_ru_RU.xcs
index a60f9dd..8598ad0 100644
--- a/dictionaries/ru_RU/dialog/registry/schema/org/openoffice/Lightproof_ru_RU.xcs
+++ b/dictionaries/ru_RU/dialog/registry/schema/org/openoffice/Lightproof_ru_RU.xcs
@@ -27,14 +27,6 @@ oor:name="Lightproof_ru_RU" oor:package="org.openoffice" xml:lang="en-US">
<info><desc>The together definition of one leaf.</desc></info>
<value></value>
</prop>
-<prop oor:name="dup" oor:type="xs:string">
- <info><desc>The dup definition of one leaf.</desc></info>
- <value></value>
-</prop>
-<prop oor:name="dup2" oor:type="xs:string">
- <info><desc>The dup2 definition of one leaf.</desc></info>
- <value></value>
-</prop>
<prop oor:name="common" oor:type="xs:string">
<info><desc>The common definition of one leaf.</desc></info>
<value></value>
@@ -47,6 +39,10 @@ oor:name="Lightproof_ru_RU" oor:package="org.openoffice" xml:lang="en-US">
<info><desc>The abbreviation definition of one leaf.</desc></info>
<value></value>
</prop>
+<prop oor:name="dup" oor:type="xs:string">
+ <info><desc>The dup definition of one leaf.</desc></info>
+ <value></value>
+</prop>
<prop oor:name="numsep" oor:type="xs:string">
<info><desc>The numsep definition of one leaf.</desc></info>
<value></value>
diff --git a/dictionaries/ru_RU/dialog/ru_RU.xdl b/dictionaries/ru_RU/dialog/ru_RU.xdl
index c479864..deefdab 100644
--- a/dictionaries/ru_RU/dialog/ru_RU.xdl
+++ b/dictionaries/ru_RU/dialog/ru_RU.xdl
@@ -3,19 +3,18 @@
<dlg:window xmlns:dlg="http://openoffice.org/2000/dialog" xmlns:script="http://openoffice.org/2000/script" dlg:id="ru_RU" dlg:left="101" dlg:top="52" dlg:width="196" dlg:height="72" dlg:closeable="true" dlg:moveable="true" dlg:withtitlebar="false">
<dlg:bulletinboard>
<dlg:fixedline dlg:id="grammar" dlg:tab-index="0" dlg:left="5" dlg:top="5" dlg:width="240" dlg:height="10" dlg:value="&amp;grammar"/>
-<dlg:checkbox dlg:id="hyphen" dlg:tab-index="1" dlg:left="10" dlg:top="15" dlg:width="120" dlg:height="10" dlg:value="&amp;hyphen" dlg:checked="true" />
-<dlg:checkbox dlg:id="comma" dlg:tab-index="2" dlg:left="130" dlg:top="15" dlg:width="120" dlg:height="10" dlg:value="&amp;comma" dlg:checked="true" />
-<dlg:checkbox dlg:id="multiword" dlg:tab-index="4" dlg:left="10" dlg:top="25" dlg:width="120" dlg:height="10" dlg:value="&amp;multiword" dlg:checked="true" />
-<dlg:checkbox dlg:id="together" dlg:tab-index="5" dlg:left="130" dlg:top="25" dlg:width="120" dlg:height="10" dlg:value="&amp;together" dlg:checked="true" />
+<dlg:checkbox dlg:id="hyphen" dlg:tab-index="1" dlg:left="10" dlg:top="15" dlg:width="120" dlg:height="10" dlg:value="&amp;hyphen" dlg:checked="true" dlg:help-text="&amp;hlp_hyphen"/>
+<dlg:checkbox dlg:id="comma" dlg:tab-index="2" dlg:left="130" dlg:top="15" dlg:width="120" dlg:height="10" dlg:value="&amp;comma" dlg:checked="true" dlg:help-text="&amp;hlp_comma"/>
+<dlg:checkbox dlg:id="multiword" dlg:tab-index="4" dlg:left="10" dlg:top="25" dlg:width="120" dlg:height="10" dlg:value="&amp;multiword" dlg:checked="true" dlg:help-text="&amp;hlp_multiword"/>
+<dlg:checkbox dlg:id="together" dlg:tab-index="5" dlg:left="130" dlg:top="25" dlg:width="120" dlg:height="10" dlg:value="&amp;together" dlg:checked="true" dlg:help-text="&amp;hlp_together"/>
<dlg:fixedline dlg:id="proofreading" dlg:tab-index="7" dlg:left="5" dlg:top="35" dlg:width="240" dlg:height="10" dlg:value="&amp;proofreading"/>
-<dlg:checkbox dlg:id="dup" dlg:tab-index="8" dlg:left="10" dlg:top="45" dlg:width="120" dlg:height="10" dlg:value="&amp;dup" dlg:checked="true" />
-<dlg:checkbox dlg:id="dup2" dlg:tab-index="9" dlg:left="130" dlg:top="45" dlg:width="120" dlg:height="10" dlg:value="&amp;dup2" dlg:checked="false" />
-<dlg:checkbox dlg:id="common" dlg:tab-index="11" dlg:left="10" dlg:top="55" dlg:width="120" dlg:height="10" dlg:value="&amp;common" dlg:checked="true" />
-<dlg:checkbox dlg:id="space" dlg:tab-index="12" dlg:left="130" dlg:top="55" dlg:width="120" dlg:height="10" dlg:value="&amp;space" dlg:checked="true" />
-<dlg:checkbox dlg:id="abbreviation" dlg:tab-index="14" dlg:left="10" dlg:top="65" dlg:width="240" dlg:height="10" dlg:value="&amp;abbreviation" dlg:checked="true" />
-<dlg:fixedline dlg:id="others" dlg:tab-index="16" dlg:left="5" dlg:top="75" dlg:width="240" dlg:height="10" dlg:value="&amp;others"/>
-<dlg:checkbox dlg:id="numsep" dlg:tab-index="17" dlg:left="10" dlg:top="85" dlg:width="240" dlg:height="10" dlg:value="&amp;numsep" dlg:checked="false" />
-<dlg:checkbox dlg:id="typographica" dlg:tab-index="19" dlg:left="10" dlg:top="95" dlg:width="240" dlg:height="10" dlg:value="&amp;typographica" dlg:checked="true" />
-<dlg:checkbox dlg:id="quotation" dlg:tab-index="21" dlg:left="10" dlg:top="105" dlg:width="240" dlg:height="10" dlg:value="&amp;quotation" dlg:checked="true" />
+<dlg:checkbox dlg:id="common" dlg:tab-index="8" dlg:left="10" dlg:top="45" dlg:width="120" dlg:height="10" dlg:value="&amp;common" dlg:checked="true" dlg:help-text="&amp;hlp_common"/>
+<dlg:checkbox dlg:id="space" dlg:tab-index="9" dlg:left="130" dlg:top="45" dlg:width="120" dlg:height="10" dlg:value="&amp;space" dlg:checked="true" dlg:help-text="&amp;hlp_space"/>
+<dlg:checkbox dlg:id="abbreviation" dlg:tab-index="11" dlg:left="10" dlg:top="55" dlg:width="120" dlg:height="10" dlg:value="&amp;abbreviation" dlg:checked="true" dlg:help-text="&amp;hlp_abbreviation"/>
+<dlg:checkbox dlg:id="dup" dlg:tab-index="12" dlg:left="130" dlg:top="55" dlg:width="120" dlg:height="10" dlg:value="&amp;dup" dlg:checked="true" dlg:help-text="&amp;hlp_dup"/>
+<dlg:fixedline dlg:id="others" dlg:tab-index="14" dlg:left="5" dlg:top="65" dlg:width="240" dlg:height="10" dlg:value="&amp;others"/>
+<dlg:checkbox dlg:id="numsep" dlg:tab-index="15" dlg:left="10" dlg:top="75" dlg:width="240" dlg:height="10" dlg:value="&amp;numsep" dlg:checked="false" dlg:help-text="&amp;hlp_numsep"/>
+<dlg:checkbox dlg:id="typographica" dlg:tab-index="17" dlg:left="10" dlg:top="85" dlg:width="240" dlg:height="10" dlg:value="&amp;typographica" dlg:checked="true" dlg:help-text="&amp;hlp_typographica"/>
+<dlg:checkbox dlg:id="quotation" dlg:tab-index="19" dlg:left="10" dlg:top="95" dlg:width="240" dlg:height="10" dlg:value="&amp;quotation" dlg:checked="true" dlg:help-text="&amp;hlp_quotation"/>
</dlg:bulletinboard>
</dlg:window>
diff --git a/dictionaries/ru_RU/dialog/ru_RU_en_US.properties b/dictionaries/ru_RU/dialog/ru_RU_en_US.properties
index 46b4eb7..12527a3 100644
--- a/dictionaries/ru_RU/dialog/ru_RU_en_US.properties
+++ b/dictionaries/ru_RU/dialog/ru_RU_en_US.properties
@@ -8,8 +8,7 @@ together=Together/separately
proofreading=Proofreading
space=Space mistake
typographica=Typographica
-dup=Word duplication within clauses
-dup2=Word duplication within sentences
+dup=Word duplication
others=Others
numsep=Separation of large numbers (ISO)
quotation=Quotation
diff --git a/dictionaries/ru_RU/dialog/ru_RU_ru_RU.properties b/dictionaries/ru_RU/dialog/ru_RU_ru_RU.properties
new file mode 100644
index 0000000..0f2b2b9
--- /dev/null
+++ b/dictionaries/ru_RU/dialog/ru_RU_ru_RU.properties
@@ -0,0 +1,25 @@
+hlp_abbreviation= \u0410\u0431\u0431\u0440\u0435\u0432\u0438\u0430\u0442\u0443\u0440\u044b, \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0438 \u0437\u043d\u0430\u043a\u0438 \u043f\u0443\u043d\u043a\u0442\u0443\u0430\u0446\u0438\u0438.
+abbreviation=\u0410\u0431\u0431\u0440\u0435\u0432\u0438\u0430\u0442\u0443\u0440\u044b
+grammar=\u0413\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0430
+hlp_hyphen= \u041f\u0440\u0430\u0432\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u043b\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 \u0434\u0435\u0444\u0438\u0441, \u0441\u043b\u0438\u0442\u043d\u043e \u0438\u043b\u0438 \u0440\u0430\u0437\u0434\u0435\u043b\u044c\u043d\u043e.
+hyphen=\u0414\u0435\u0444\u0438\u0441
+hlp_comma= \u041f\u043e\u0438\u0441\u043a \u043e\u0448\u0438\u0431\u043e\u043a \u0432 \u0440\u0430\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0437\u043d\u0430\u043a\u043e\u0432 \u043f\u0440\u0435\u043f\u0438\u043d\u0430\u043d\u0438\u044f.
+comma=\u041f\u0443\u043d\u043a\u0442\u0443\u0430\u0446\u0438\u044f
+hlp_common= \u041f\u043e\u0438\u0441\u043a \u043f\u0440\u043e\u0447\u0438\u0445 \u043e\u0448\u0438\u0431\u043e\u043a
+common=\u041e\u0431\u0449\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438
+hlp_multiword= \u041f\u0440\u0430\u0432\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u043b\u043e\u0432\u043e\u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0439 \u0438 \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u044b\u0445 \u043e\u0431\u043e\u0440\u043e\u0442\u043e\u0432.
+multiword=\u0421\u043b\u043e\u0432\u043e\u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u044f
+hlp_together= \u041f\u0440\u0430\u0432\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u043b\u043e\u0432 \u0441\u043b\u0438\u0442\u043d\u043e \u0438\u043b\u0438 \u0440\u0430\u0437\u0434\u0435\u043b\u044c\u043d\u043e.
+together=\u0421\u043b\u0438\u0442\u043d\u043e/\u0440\u0430\u0437\u0434\u0435\u043b\u044c\u043d\u043e
+proofreading=\u0421\u0442\u0438\u043b\u0438\u0441\u0442\u0438\u043a\u0430
+hlp_space= \u041f\u043e\u0438\u0441\u043a \u043e\u0448\u0438\u0431\u043e\u043a \u0441 \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u043c: \u0434\u0432\u043e\u0439\u043d\u043e\u0439 \u043f\u0440\u043e\u0431\u0435\u043b, \u043f\u0440\u043e\u0431\u0435\u043b \u043f\u0435\u0440\u0435\u0434 \u0437\u043d\u0430\u043a\u0430\u043c\u0438 \u043f\u0443\u043d\u043a\u0442\u0443\u0430\u0446\u0438\u0438.
+space=\u041f\u0440\u043e\u0431\u0435\u043b
+hlp_typographica= \u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0442\u044c \u0437\u0430\u043c\u0435\u043d\u0443 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0439 \u0437\u043d\u0430\u043a\u043e\u0432 \u043d\u0430 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b.
+typographica=\u0422\u0438\u043f\u043e\u0433\u0440\u0430\u0444\u0438\u043a\u0430
+hlp_dup= \u041f\u043e\u0438\u0441\u043a \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0449\u0438\u0445\u0441\u044f \u0441\u043b\u043e\u0432
+dup=\u041f\u043e\u0432\u0442\u043e\u0440 \u0441\u043b\u043e\u0432
+others=\u041f\u0440\u043e\u0447\u0435\u0435
+hlp_numsep= \u0420\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u0438 \u0433\u0440\u0443\u043f\u043f \u0440\u0430\u0437\u0440\u044f\u0434\u043e\u0432 (ISO) \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0447\u0438\u0441\u0435\u043b
+numsep=\u0420\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u0438 \u0433\u0440\u0443\u043f\u043f \u0440\u0430\u0437\u0440\u044f\u0434\u043e\u0432 (ISO) \u0434\u043b\u044f \u0447\u0438\u0441\u0435\u043b
+hlp_quotation= \u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0442\u044c \u0437\u0430\u043c\u0435\u043d\u0443 \u043a\u0430\u0432\u044b\u0447\u0435\u043a \u043d\u0430 \u043a\u0430\u0432\u044b\u0447\u043a\u0438-\u00ab\u0451\u043b\u043e\u0447\u043a\u0438\u00bb \u0438\u043b\u0438 \u043f\u0430\u0440\u043d\u044b\u0435 \u043a\u0430\u0432\u044b\u0447\u043a\u0438.
+quotation=\u041a\u0430\u0432\u044b\u0447\u043a\u0438
diff --git a/dictionaries/ru_RU/pythonpath/lightproof_handler_ru_RU.py b/dictionaries/ru_RU/pythonpath/lightproof_handler_ru_RU.py
index 463ffa7..178a85b 100644
--- a/dictionaries/ru_RU/pythonpath/lightproof_handler_ru_RU.py
+++ b/dictionaries/ru_RU/pythonpath/lightproof_handler_ru_RU.py
@@ -1,8 +1,6 @@
import uno
import unohelper
-
-from lightproof_opts_ru_RU import lopts
-from lightproof_opts_ru_RU import lopts_default
+import lightproof_opts_ru_RU
from lightproof_impl_ru_RU import pkg
from com.sun.star.lang import XServiceInfo
@@ -14,7 +12,7 @@ options = {}
def load(context):
try:
l = LightproofOptionsEventHandler(context)
- for i in lopts:
+ for i in lightproof_opts_ru_RU.lopts:
l.load(i)
except:
pass
@@ -24,9 +22,9 @@ def get_option(page, option):
return options[page + "," + option]
except:
try:
- return options[page[:2] + "," + option]
+ return options[page[:2] + "," + option]
except:
- return 0
+ return 0
def set_option(page, option, value):
options[page + "," + option] = int(value)
@@ -45,7 +43,7 @@ class LightproofOptionsEventHandler( unohelper.Base, XServiceInfo, XContainerWin
# XContainerWindowEventHandler
def callHandlerMethod(self, aWindow, aEventObject, sMethod):
if sMethod == "external_event":
- return self.handleExternalEvent(aWindow, aEventObject)
+ return self.handleExternalEvent(aWindow, aEventObject)
def getSupportedMethodNames(self):
return ("external_event", )
@@ -53,65 +51,65 @@ class LightproofOptionsEventHandler( unohelper.Base, XServiceInfo, XContainerWin
def handleExternalEvent(self, aWindow, aEventObject):
sMethod = aEventObject
if sMethod == "ok":
- self.saveData(aWindow)
+ self.saveData(aWindow)
elif sMethod == "back" or sMethod == "initialize":
- self.loadData(aWindow)
+ self.loadData(aWindow)
return True
def load(self, sWindowName):
child = self.getChild(sWindowName)
- for i in lopts[sWindowName]:
- sValue = child.getPropertyValue(i)
- if sValue == '':
- if i in lopts_default[sWindowName]:
- sValue = 1
- else:
- sValue = 0
- set_option(sWindowName, i, sValue)
+ for i in lightproof_opts_ru_RU.lopts[sWindowName]:
+ sValue = child.getPropertyValue(i)
+ if sValue == '':
+ if i in lightproof_opts_ru_RU.lopts_default[sWindowName]:
+ sValue = 1
+ else:
+ sValue = 0
+ set_option(sWindowName, i, sValue)
def loadData(self, aWindow):
sWindowName = self.getWindowName(aWindow)
if (sWindowName == None):
- return
+ return
child = self.getChild(sWindowName)
- for i in lopts[sWindowName]:
- sValue = child.getPropertyValue(i)
- if sValue == '':
- if i in lopts_default[sWindowName]:
- sValue = 1
- else:
- sValue = 0
- xControl = aWindow.getControl(i)
- xControl.State = sValue
- set_option(sWindowName, i, sValue)
+ for i in lightproof_opts_ru_RU.lopts[sWindowName]:
+ sValue = child.getPropertyValue(i)
+ if sValue == '':
+ if i in lightproof_opts_ru_RU.lopts_default[sWindowName]:
+ sValue = 1
+ else:
+ sValue = 0
+ xControl = aWindow.getControl(i)
+ xControl.State = sValue
+ set_option(sWindowName, i, sValue)
def saveData(self, aWindow):
sWindowName = self.getWindowName(aWindow)
if (sWindowName == None):
- return
+ return
child = self.getChild(sWindowName)
- for i in lopts[sWindowName]:
- xControl = aWindow.getControl(i)
- sValue = xControl.State
- child.setPropertyValue(i, str(sValue))
- set_option(sWindowName, i, sValue)
+ for i in lightproof_opts_ru_RU.lopts[sWindowName]:
+ xControl = aWindow.getControl(i)
+ sValue = xControl.State
+ child.setPropertyValue(i, str(sValue))
+ set_option(sWindowName, i, sValue)
self.commitChanges()
def getWindowName(self, aWindow):
sName = aWindow.getModel().Name
- if sName in lopts:
- return sName
+ if sName in lightproof_opts_ru_RU.lopts:
+ return sName
return None
# XServiceInfo method implementations
def getImplementationName (self):
- return self.ImplementationName
+ return self.ImplementationName
def supportsService(self, ServiceName):
- return (ServiceName in self.services)
+ return (ServiceName in self.services)
def getSupportedServiceNames (self):
- return self.services
+ return self.services
def getChild(self, name):
return self.node.getByName(name)
diff --git a/dictionaries/ru_RU/pythonpath/lightproof_impl_ru_RU.py b/dictionaries/ru_RU/pythonpath/lightproof_impl_ru_RU.py
index e0b685d..68e8f56 100644
--- a/dictionaries/ru_RU/pythonpath/lightproof_impl_ru_RU.py
+++ b/dictionaries/ru_RU/pythonpath/lightproof_impl_ru_RU.py
@@ -1,6 +1,235 @@
# -*- encoding: UTF-8 -*-
+import uno, re, sys, os, traceback
+from string import join
+from com.sun.star.text.TextMarkupType import PROOFREADING
+from com.sun.star.beans import PropertyValue
+
pkg = "ru_RU"
lang = "ru_RU"
locales = {'ru-RU': ['ru', 'RU', '']}
-version = "0.3"
-author = ""
+version = "0.3.2"
+author = "Yakov Reztsov <yr at myooo dot ru>"
+name = "Lightproof grammar checker (Russian)"
+
+import lightproof_handler_ru_RU
+
+# loaded rules (check for Update mechanism of the editor)
+try:
+ langrule
+except NameError:
+ langrule = {}
+
+# ignored rules
+ignore = {}
+
+# cache for morphogical analyses
+analyses = {}
+stems = {}
+suggestions = {}
+
+# assign Calc functions
+calcfunc = None
+
+# check settings
+def option(lang, opt):
+ return lightproof_handler_ru_RU.get_option(lang.Language + "_" + lang.Country, opt)
+
+# filtering affix fields (ds, is, ts etc.)
+def onlymorph(st):
+ if st != None:
+ st = re.sub(r"^.*(st:|po:)", r"\\1", st) # keep last word part
+ st = re.sub(r"\\b(?=[dit][sp]:)","@", st) # and its affixes
+ st = re.sub(r"(?<!@)\\b\w\w:\w+","", st).replace('@','').strip()
+ return st
+
+# if the pattern matches all analyses of the input word,
+# return the last matched substring
+def _morph(rLoc, word, pattern, all, onlyaffix):
+ global analyses
+ if not word:
+ return None
+ if word not in analyses:
+ x = spellchecker.spell(u"<?xml?><query type='analyze'><word>" + word + "</word></query>", rLoc, ())
+ if not x:
+ return None
+ t = x.getAlternatives()
+ if not t:
+ t = [""]
+ analyses[word] = t[0].split("</a>")[:-1]
+ a = analyses[word]
+ result = None
+ p = re.compile(pattern)
+ for i in a:
+ if onlyaffix:
+ i = onlymorph(i)
+ result = p.search(i)
+ if result:
+ result = result.group(0)
+ if not all:
+ return result
+ elif all:
+ return None
+ return result
+
+def morph(rLoc, word, pattern, all=True):
+ return _morph(rLoc, word, pattern, all, False)
+
+def affix(rLoc, word, pattern, all=True):
+ return _morph(rLoc, word, pattern, all, True)
+
+def spell(rLoc, word):
+ if not word:
+ return None
+ return spellchecker.isValid(word, rLoc, ())
+
+# get the tuple of the stem of the word or an empty array
+def stem(rLoc, word):
+ global stems
+ if not word:
+ return []
+ if not word in stems:
+ x = spellchecker.spell(u"<?xml?><query type='stem'><word>" + word + "</word></query>", rLoc, ())
+ if not x:
+ return []
+ t = x.getAlternatives()
+ if not t:
+ t = []
+ stems[word] = list(t)
+ return stems[word]
+
+# get the tuple of the morphological generation of a word or an empty array
+def generate(rLoc, word, example):
+ if not word:
+ return []
+ x = spellchecker.spell(u"<?xml?><query type='generate'><word>" + word + "</word><word>" + example + "</word></query>", rLoc, ())
+ if not x:
+ return []
+ t = x.getAlternatives()
+ if not t:
+ t = []
+ return list(t)
+
+# get suggestions
+def suggest(rLoc, word):
+ global suggestions
+ if not word:
+ return word
+ if word not in suggestions:
+ x = spellchecker.spell("_" + word, rLoc, ())
+ if not x:
+ return word
+ t = x.getAlternatives()
+ suggestions[word] = join(t, "\\n")
+ return suggestions[word]
+
+# get the nth word of the input string or None
+def word(s, n):
+ a = re.match("(?u)( [-.\w%%]+){" + str(n-1) + "}( [-.\w%%]+)", s)
+ if not a:
+ return ''
+ return a.group(2)[1:]
+
+# get the (-)nth word of the input string or None
+def wordmin(s, n):
+ a = re.search("(?u)([-.\w%%]+ )([-.\w%%]+ ){" + str(n-1) + "}$", s)
+ if not a:
+ return ''
+ return a.group(1)[:-1]
+
+def calc(funcname, par):
+ global calcfunc
+ global SMGR
+ if calcfunc == None:
+ calcfunc = SMGR.createInstance( "com.sun.star.sheet.FunctionAccess")
+ if calcfunc == None:
+ return None
+ return calcfunc.callFunction(funcname, par)
+
+def proofread( nDocId, TEXT, LOCALE, nStartOfSentencePos, nSuggestedSentenceEndPos, rProperties ):
+ global ignore
+ aErrs = []
+ s = TEXT[nStartOfSentencePos:nSuggestedSentenceEndPos]
+ for i in get_rule(LOCALE).dic:
+ # 0: regex, 1: replacement, 2: message, 3: condition, 4: ngroup, (5: oldline), 6: case sensitive ?
+ if i[0] and not str(i[0]) in ignore:
+ for m in i[0].finditer(s):
+ try:
+ if not i[3] or eval(i[3]):
+ aErr = uno.createUnoStruct( "com.sun.star.linguistic2.SingleProofreadingError" )
+ aErr.nErrorStart = nStartOfSentencePos + m.start(i[4]) # nStartOfSentencePos
+ aErr.nErrorLength = m.end(i[4]) - m.start(i[4])
+ aErr.nErrorType = PROOFREADING
+ aErr.aRuleIdentifier = str(i[0])
+ iscap = (i[-1] and m.group(i[4])[0:1].isupper())
+ if i[1][0:1] == "=":
+ aErr.aSuggestions = tuple(cap(eval(i[1][1:]).replace('|', "\n").split("\n"), iscap, LOCALE))
+ elif i[1] == "_":
+ aErr.aSuggestions = ()
+ else:
+ aErr.aSuggestions = tuple(cap(m.expand(i[1]).replace('|', "\n").split("\n"), iscap, LOCALE))
+ comment = i[2]
+ if comment[0:1] == "=":
+ comment = eval(comment[1:])
+ else:
+ comment = m.expand(comment)
+ aErr.aShortComment = comment.replace('|', '\n').replace('\\n', '\n').split("\n")[0].strip()
+ aErr.aFullComment = comment.replace('|', '\n').replace('\\n', '\n').split("\n")[-1].strip()
+ if "://" in aErr.aFullComment:
+ p = PropertyValue()
+ p.Name = "FullCommentURL"
+ p.Value = aErr.aFullComment
+ aErr.aFullComment = aErr.aShortComment
+ aErr.aProperties = (p,)
+ else:
+ aErr.aProperties = ()
+ aErrs = aErrs + [aErr]
+ except Exception as e:
+ if len(i) == 7:
+ raise Exception(str(e), i[5])
+ raise
+
+ return tuple(aErrs)
+
+def cap(a, iscap, rLoc):
+ if iscap:
+ for i in range(0, len(a)):
+ if a[i][0:1] == "i":
+ if rLoc.Language == "tr" or rLoc.Language == "az":
+ a[i] = u"\u0130" + a[i][1:]
+ elif a[i][1:2] == "j" and rLoc.Language == "nl":
+ a[i] = "IJ" + a[i][2:]
+ else:
+ a[i] = "I" + a[i][1:]
+ else:
+ a[i] = a[i].capitalize()
+ return a
+
+def compile_rules(dic):
+ # compile regular expressions
+ for i in dic:
+ try:
+ if re.compile("[(][?]iu[)]").match(i[0]):
+ i += [True]
+ i[0] = re.sub("[(][?]iu[)]", "(?u)", i[0])
+ else:
+ i += [False]
+ i[0] = re.compile(i[0])
+ except:
+ if 'PYUNO_LOGLEVEL' in os.environ:
+ print("Lightproof: bad regular expression: ", traceback.format_exc())
+ i[0] = None
+
+def get_rule(loc):
+ try:
+ return langrule[pkg]
+ except:
+ langrule[pkg] = __import__("lightproof_" + pkg)
+ compile_rules(langrule[pkg].dic)
+ return langrule[pkg]
+
+def get_path():
+ return os.path.join(os.path.dirname(sys.modules[__name__].__file__), __name__ + ".py")
+
+# [code]
+
+
diff --git a/dictionaries/ru_RU/pythonpath/lightproof_opts_ru_RU.py b/dictionaries/ru_RU/pythonpath/lightproof_opts_ru_RU.py
index 6540d27..b9557e1 100644
--- a/dictionaries/ru_RU/pythonpath/lightproof_opts_ru_RU.py
+++ b/dictionaries/ru_RU/pythonpath/lightproof_opts_ru_RU.py
@@ -1,4 +1,4 @@
lopts = {}
lopts_default = {}
-lopts['ru_RU'] = [u'hyphen', u'comma', u'multiword', u'together', u'dup', u'dup2', u'common', u'space', u'abbreviation', u'numsep', u'typographica', u'quotation']
-lopts_default['ru_RU'] = [u'hyphen', u'comma', u'multiword', u'together', u'dup', u'common', u'space', u'abbreviation', u'typographica', u'quotation']
+lopts['ru_RU'] = [u'hyphen', u'comma', u'multiword', u'together', u'common', u'space', u'abbreviation', u'dup', u'numsep', u'typographica', u'quotation']
+lopts_default['ru_RU'] = [u'hyphen', u'comma', u'multiword', u'together', u'common', u'space', u'abbreviation', u'dup', u'typographica', u'quotation']
diff --git a/dictionaries/ru_RU/pythonpath/lightproof_ru_RU.py b/dictionaries/ru_RU/pythonpath/lightproof_ru_RU.py
index 090cf29..cb9c6e1 100644
--- a/dictionaries/ru_RU/pythonpath/lightproof_ru_RU.py
+++ b/dictionaries/ru_RU/pythonpath/lightproof_ru_RU.py
@@ -1,3 +1,3 @@
# -*- encoding: UTF-8 -*-
-dic = [[u'(?iu)(?<![-\\w\u2013.,\xad])\\b[Ff][Oo][Oo]\\b(?![-\\w\u2013\xad])', u'bar', u'test', False], [u'(?iu)(?<![-\\w\u2013.,\xad]) ([.?!,:;)\u201d]($| ))(?![-\\w\u2013\xad])', u'\\1', u'\u041b\u0438\u0448\u043d\u0438\u0439 \u043f\u0440\u043e\u0431\u0435\u043b \u043f\u0435\u0440\u0435\u0434 \u0437\u043d\u0430\u043a\u043e\u043c \u043f\u0443\u043d\u043a\u0442\u0443\u0430\u0446\u0438\u0438.', u'option(LOCALE,"space")'], [u'(?iu)(?<![-\\w\u2013.,\xad])([(\u201c]) (?![-\\w\u2013\xad])', u'\\1', u'\u041b\u0438\u0448\u043d\u0438\u0439 \u043f\u0440\u043e\u0431\u0435\u043b \u043f\u043e\u0441\u043b\u0435 \u0437\u043d\u0430\u043a\u0430 \u043f\u0443\u043d\u043a\u0442\u0443\u0430\u0446\u0438\u0438.', u'option(LOCALE,"space")'], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<Abc_1>[a-zA-ZA-Z\u0430-\u044f\u0410-\u042f\u0410-\u042f]+)(?P<punct_1>[?!,:;%\u2030\u2031\u02da\u201c\u201d\u2018\u201e])(?P<Abc_2>[a-zA-ZA-Z\u0430-\u044f\u0410-\u042f\u0410-\u042f]+)(?![-\\w\u2013\xad])', u'\\g<Abc_1>\\g<punct_1> \\g<Abc_2>', u'\u041f\u0440\u043e\u043f\u0443\u0449\u0435\u043d \u043f\u0440\u043e\u0431\u0435\u043b?', u'option(LOCALE,"space")'], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<abc_1>[a-zA-Z\u0430-\u044f\u0410-\u042f]+)[.](?P<ABC_1>[A-Z\u0410-\u042f]+)(?![-\\w\u2013\xad])', u'\\g<abc_1>. \\g<ABC_1>', u'\u041f\u0440\u043e\u043f\u0443\u0449\u0435\u043d \u043f\u0440\u043e\u0431\u0435\u043b?', u'option(LOCALE,"space")'], [u'(?iu)(?<![-\\w\u2013.,\xad])[.]{3}(?![-\\w\u2013\xad])', u'\u2026', u'\u0421\u0438\u043c\u0432\u043e\u043b \u0442\u0440\u043e\u0435\u0442\u043e\u0447\u0438\u044f.', u'option(LOCALE,"typographica")'], [u'(?iu)(?<![-\\w\u2013.,\xad])(\\d+)[Xx](\\d+)(?![-\\w\u2013\xad])', u'\\1\xd7\\2', u'\u0417\u043d\u0430\u043a \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f.', u'option(LOCALE,"typographica")'], [u'(?iu)((?<=[!?.] )|^)[-\u2014] (?![-\\w\u2013\xad])', u'\u2013 ', u'\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430 \u0442\u0438\u0440\u0435 (n-dash)?', u'option(LOCALE,"typographica")'], [u'(?iu)(?<![-\\w\u2013.,\xad]) [-\u2014]([ ,;])(?![-\\w\u2013\xad])', u' \u2013\\1', u'\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430 \u0442\u0438\u0440\u0435 (n-dash)?', u'option(LOCALE,"typographica")'], [u'(?iu)(?<![-\\w\u2013.,\xad])[,]{2}(?![-\\w\u2013\xad])', u',', u'\u0414\u0432\u0435 \u0437\u0430\u043f\u044f\u0442\u044b\u0435 \u043f\u043e\u0434\u0440\u044f\u0434.', u'option(LOCALE,"comma")'], [u'(?iu)(?<![-\\w\u2013.,\xad])[ ](?P<abbr_1>[\u0420\u0440][\u0423\u0443][\u0411\u0431]|[\u041a\u043a][\u041e\u043e][\u041f\u043f]|[\u0413\u0433][\u0420\u0440][\u041d\u043d]|[\u0422\u0442][\u042b\u044b][\u0421\u0441]|[\u0423\u0443][\u041b\u043b]|[\u041a\u043a][\u0412\u0432]|[\u041f\u043f][\u041e\u043e][\u0421\u0441]|[\u0421\u0441][\u0422\u0442]|[\u041f\u043f][\u0420\u0440]|[\u041f\u043f][\u0420\u0440][\u041e\u043e][\u0421\u0441][\u041f\u043f]|[\u0415\u0435][\u0414\u0434]|[\u042d\u044d][\u041a\u043a][\u0417\u0437]|[\u0422\u0442][\u0415\u0435][\u041b\u043b]|[\u0418\u0438][\u0421\u0441][\u041f\u043f])[ ](?![-\\w\u2013\xad])', u' \\g<abbr_1>. ', u'\u0422\u043e\u0447\u043a\u0430 \u043f\u043e\u0441\u043b\u0435 \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u0439.', u'option(LOCALE,"abbreviation")'], [u'(?iu)(?<![-\\w\u2013.,\xad])(^|\\b|(?P<punct_1>[?!,:;%\u2030\u2031\u02da\u201c\u201d\u2018\u201e])|[.]) {2,3}(\\b|$)(?![-\\w\u2013\xad])', u'\\1 ', u'\u041b\u0438\u0448\u043d\u0438\u0439 \u043f\u0440\u043e\u0431\u0435\u043b.', u'option(LOCALE,"space")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\"(\\w[^\\"\u201c\u201d]*[\\w.?!,])\\"(?![-\\w\u2013\xad])', u'\xab\\1\xbb\\n\u201e\\1\u201d\\n\u201c\\1\u201d', u'\u041a\u0430\u0432\u044b\u0447\u043a\u0438.', u'option(LOCALE,"quotation")'], [u"(?iu)(?<![-\\w\u2013.,\xad])\\B'(\\w[^']*[\\w.?!,])'\\B(?![-\\w\u2013\xad])", u'\u2018\\1\u2019', u'\u041a\u0430\u0432\u044b\u0447\u043a\u0438.', u'option(LOCALE,"quotation")'], [u"(?iu)(?<![-\\w\u2013.,\xad])(?iu)(?P<Abc_1>[a-zA-ZA-Z\u0430-\u044f\u0410-\u042f\u0410-\u042f]+)'(?P<w_1>\\w*)(?![-\\w\u2013\xad])", u'\\g<Abc_1>\u2019\\g<w_1>', u'\u0410\u043f\u043e\u0441\u0442\u0440\u043e\u0444.', u'option(LOCALE,"quotation")'], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<abc_1>[a-zA-Z\u0430-\u044f\u0410-\u042f]+)[ ][\u0410\u0430][ ](?![-\\w\u2013\xad])', u'\\g<abc_1>, \u0430 ', u'\u041f\u0440\u043e\u043f\u0443\u0449\u0435\u043d\u0430 \u0437\u0430\u043f\u044f\u0442\u0430\u044f \u043f\u0435\u0440\u0435\u0434 \u0430.', u'option(LOCALE,"comma")'], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<abc_1>[a-zA-Z\u0430-\u044f\u0410-\u042f]+)[ ][\u041d\u043d][\u041e\u043e][ ](?![-\\w\u2013\xad])', u'\\g<abc_1>, \u043d\u043e ', u'\u041f\u0440\u043e\u043f\u0443\u0449\u0435\u043d\u0430 \u0437\u0430\u043f\u044f\u0442\u0430\u044f \u043f\u0435\u0440\u0435\u0434 \u043d\u043e.', u'option(LOCALE,"comma")'], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<abc_1>[a-zA-Z\u0430-\u044f\u0410-\u042f]+), (?P<novvod_1>[\u0410\u0430][\u0412\u0432][\u041e\u043e][\u0421\u0441][\u042c\u044c]|[\u0411\u0431][\u0423\u0443][\u041a\u043a][\u0412\u0432][\u0410\u0430][\u041b\u043b][\u042c\u044c][\u041d\u043d][\u041e\u043e]|[\u0411\u0431][\u0423\u0443][\u0414\u0434][\u0422\u0442][\u041e\u043e]|[\u0412\u0432][\u0414\u0434][\u041e\u043e][\u0411\u0431][\u0410\u0430][\u0412\u0432][\u041e\u043e][\u041a\u043a]|[\u0412\u0432][\u0414\u0434][\u0420\u0440][\u0423\u0443][\u0413\u0433]|[\u0412\u0432][\u0415\u0435][\u0414\u0434][\u042c\u044c]|[\u0412\u0432][\u041e\u043e][\u0422\u0442]|[\u0414\u0434][\u0410\u0430][\u0416\u0436][\u0415\u0435]|[\u0418\u0438][\u0421\u0441][\u041a\u043a][\u041b\u043b][\u042e\u044e][\u0427\u0447][\u0418\u0438][\u0422\u0442][\u0415\u0435][\u041b\u043b][\u042c\u044c][\u041d\u043d][\u041e\u043e]|[\u0418\u0438][\u041c\u043c][\u0415\u0435][\u041d\u043d][\u041d\u043d][\u041e\u043e]|[\u041d\u043d][\u0415\u0435][\u0411\u0431][\u041e\u043e][\u0421\u0441][\u042c\u044c]|[\u041f\u043f][\u0420\u0440][\u0418\u0438][\u0411\u0431][\u041b\u043b][\u0418\u0438][\u0417\u0437][\u0418\u0438][\u0422\u0442][\u0415\u0435][\u041b\u043b][\u042c\u044c][\u041d\u043d][\u041e\u043e]|[\u041f\u043f][\u0420\u0440][\u0418\u0438][\u041c\u043c][\u0415\u0435][\u0420\u0440][\u041d\u043d][\u041e\u043e]|[\u041f\u043f][\u0420\u0440][\u0418\u0438][\u0422\u0442][\u041e\u043e][\u041c\u043c]|[\u041f\u043f][\u041e\u043e][\u0427\u0447][\u0422\u0442][\u0418\u0438]|[\u041f\u043f][\u041e\u043e][\u042d\u044d][\u0422\u0442][\u041e\u043e][\u041c\u043c][\u0423\u0443]|[\u041f\u043f][\u0420\u0440][\u041e\u043e][\u0421\u0441][\u0422\u0442][\u041e\u043e]|[\u0420\u0440][\u0415\u0435][\u0428\u0448][\u0418\u0438][\u0422\u0442][\u0415\u0435][\u041b\u043b][\u042c\u044c][\u041d\u043d][\u041e\u043e]|[\u0421\u0441][\u041b\u043b][\u041e\u043e][\u0412\u0432][\u041d\u043d][\u041e\u043e]|[\u042f\u044f][\u041a\u043a][\u041e\u043e][\u0411\u0431][\u042b\u044b]|[\u0412\u0432] [\u0414\u0434][\u041e\u043e][\u0412\u0432][\u0415\u0435][\u0420\u0440][\u0428\u0448][\u0415\u0435][\u041d\u043d][\u0418\u0438][\u0415\u0435]|[\u0412\u0432] [\u041a\u043a][\u041e\u043e][\u041d\u043d][\u0415\u0435][\u0427\u0447][\u041d\u043d][\u041e\u043e][\u041c\u043c] [\u0421\u0441][\u0427\u0447][\u0415\u0435][\u0422\u0442][\u0415\u0435]|[\u0412\u0432][\u0420\u0440][\u042f\u044f][\u0414\u0434] [\u041b\u043b][\u0418\u0438]|[\u0412\u0432][\u0421\u0441][\u0415\u0435]-[\u0422\u0442][\u0410\u0430][\u041a\u043a][\u0418\u0438]|[\u041a\u043a][\u0410\u0430][\u041a\u043a] [\u0411\u0431][\u0423\u0443][\u0414\u0434][\u0422\u0442][\u041e\u043e]|[\u041a\u043a][\u0410\u0430][\u041a\u043a] [\u0411\u0431][\u042b\u044b]|[\u041a\u043a][\u0410\u0430][\u041a\u043a] [\u0420\u0440][\u0410\u0430][\u0417\u0437]|[\u041a\u043a] [\u0422\u0442][\u041e\u043e][\u041c\u043c][\u0423\u0443] [\u0416\u0436][\u0415\u0435]|[\u041c\u043c][\u0415\u0435][\u0416\u0436][\u0414\u0434][\u0423\u0443] [\u0422\u0442][\u0415\u0435][\u041c\u043c]|[\u041f\u043f][\u041e\u043e] [\u041f\u043f][\u0420\u0440][\u0415\u0435][\u0414\u0434][\u041b\u043b][\u041e\u043e][\u0416\u0436][\u0415\u0435][\u041d\u043d][\u0418\u0438][\u042e\u044e]|[\u041f\u043f][\u041e\u043e] [\u041f\u043f][\u041e\u043e][\u0421\u0441][\u0422\u0442][\u0410\u0430][\u041d\u043d][\u041e\u043e][\u0412\u0432][\u041b\u043b][\u0415\u0435][\u041d\u043d][\u0418\u0438][\u042e\u044e]|[\u041f\u043f][\u041e\u043e] [\u0420\u0440][\u0415\u0435][\u0428\u0448][\u0415\u0435][\u041d\u043d][\u0418\u0438][\u042e\u044e]),(?![-\\w\u2013\xad])', u'\\g<abc_1> \\g<novvod_1>', u'\u0421\u043b\u043e\u0432\u0430, \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0449\u0438\u0435\u0441\u044f \u0432\u0432\u043e\u0434\u043d\u044b\u043c\u0438.', u'option(LOCALE,"comma")'], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<abc_1>[a-zA-Z\u0430-\u044f\u0410-\u042f]+) (?P<vvod_1>[\u0418\u0438][\u0422\u0442][\u0410\u0430][\u041a\u043a]|[\u0421\u0441][\u041b\u043b][\u0415\u0435][\u0414\u0434][\u041e\u043e][\u0412\u0432][\u0410\u0430][\u0422\u0442][\u0415\u0435][\u041b\u043b][\u042c\u044c][\u041d\u043d][\u041e\u043e]|[\u0412\u0432][\u041e\u043e]-[\u041f\u043f][\u0415\u0435][\u0420\u0440][\u0412\u0432][\u042b\u044b][\u0425\u0445]|[\u0412\u0432][\u041e\u043e]-[\u0412\u0432][\u0422\u0442][\u041e\u043e][\u0420\u0440][\u042b\u044b][\u0425\u0445]|[\u0412\u0432]-[\u0422\u0442][\u0420\u0440][\u0415\u0435][\u0422\u0442][\u042c\u044c][\u0418\u0438][\u0425\u0445]|[\u0412\u0432]-[\u0427\u0447][\u0415\u0435][\u0422\u0442][\u0412\u0432][\u0415\u0435][\u0420\u0440][\u0422\u0442][\u042b\u044b][\u0425\u0445]|[\u0412\u0432]-[\u041f\u043f][\u042f\u044f][\u0422\u0442][\u042b\u044b][\u0425\u0445]|[\u041f\u043f][\u041e\u043e][\u0416\u0436][\u0410\u0430][\u041b\u043b][\u0423\u0443][\u0419\u0439][\u0421\u0441][\u0422\u0442][\u0410\u0430]|[\u041a\u043a][\u0410\u0430][\u041a\u043a] [\u041d\u043d][\u0410\u0430][\u0420\u0440][\u041e\u043e][\u0427\u0447][\u041d\u043d][\u041e\u043e]|[\u041a\u043a][\u0410\u0430][\u041a\u043a] [\u0418\u0438][\u0421\u0441][\u041a\u043a][\u041b\u043b][\u042e\u044e][\u0427\u0447][\u0415\u0435][\u041d\u043d][\u0418\u0438][\u0415\u0435]|[\u041a\u043a][\u0410\u0430][\u041a\u043a] [\u041f\u043f][\u0420\u0440][\u0410\u0430][\u0412\u0432][\u0418\u0438][\u041b\u043b][\u041e\u043e])(?![-\\w\u2013\xad])', u'\\g<abc_1>, \\g<vvod_1>,', u'\u0421\u043b\u043e\u0432\u0430, \u044f\u0432\u043b\u044f\u044e\u0449\u0438\u0435\u0441\u044f \u0432\u0432\u043e\u0434\u043d\u044b\u043c\u0438, \u0432\u044b\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u0437\u0430\u043f\u044f\u0442\u044b\u043c\u0438.', u'option(LOCALE,"comma")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041b\u043b][\u041e\u043e][\u0416\u0436][\u0418\u0438][\u0422\u0442][\u042c\u044c]\\b(?![-\\w\u2013\xad])', u'\u043a\u043b\u0430\u0441\u0442\u044c', u'\u041e\u0431\u0449\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438', u'option(LOCALE,"common")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041b\u043b][\u042f\u044f][\u0416\u0436][\u042c\u044c]\\b(?![-\\w\u2013\xad])', u'\u043b\u044f\u0433', u'\u041e\u0431\u0449\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438', u'option(LOCALE,"common")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0415\u0435][\u0425\u0445][\u0410\u0430][\u0419\u0439]\\b(?![-\\w\u2013\xad])', u'\u043f\u043e\u0435\u0437\u0436\u0430\u0439', u'\u041e\u0431\u0449\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438', u'option(LOCALE,"common")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0418\u0438][\u0425\u0445][\u041d\u043d](?P<abc_1>[a-zA-Z\u0430-\u044f\u0410-\u042f]+)\\b(?![-\\w\u2013\xad])', u'\u0438\u0445', u'\u041f\u0440\u0438\u0442\u044f\u0436\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e\u0438\u043c\u0435\u043d\u0438\u0435 \u043d\u0435 \u0441\u043a\u043b\u043e\u043d\u044f\u0435\u0442\u0441\u044f', u'option(LOCALE,"common")'], [u'(?iu)(?<![-\\w\u2013.,\xad])[\u0416\u0436][\u042b\u044b](?![-\\w\u2013\xad])', u'\u0436\u0438', u'\u0427\u0435\u0440\u0435\u0437 "\u0438"', u'option(LOCALE,"common")'], [u'(?iu)(?<![-\\w\u2013.,\xad])[\u0428\u0448][\u042b\u044b](?![-\\w\u2013\xad])', u'\u0448\u0438', u'\u0427\u0435\u0440\u0435\u0437 "\u0438"', u'option(LOCALE,"common")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u041e\u043e][\u0420\u0440][\u0414\u0434] [\u041e\u043e][\u0421\u0441][\u0422\u0442]\\b(?![-\\w\u2013\xad])', u'\u043d\u043e\u0440\u0434-\u043e\u0441\u0442\\n\u043d\u043e\u0440\u0434\u043e\u0441\u0442', u'\u0414\u0435\u0444\u0438\u0441?', u'option(LOCALE,"hyphen")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u041e\u043e][\u0420\u0440][\u0414\u0434] [\u0412\u0432][\u0415\u0435][\u0421\u0441][\u0422\u0442]\\b(?![-\\w\u2013\xad])', u'\u043d\u043e\u0440\u0434-\u0432\u0435\u0441\u0442\\n\u043d\u043e\u0440\u0434\u0432\u0435\u0441\u0442', u'\u0414\u0435\u0444\u0438\u0441?', u'option(LOCALE,"hyphen")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0421\u0441][\u0415\u0435][\u0412\u0432][\u0415\u0435][\u0420\u0440][\u041e\u043e] [\u0417\u0437][\u0410\u0430][\u041f\u043f][\u0410\u0430][\u0414\u0434][\u041d\u043d](?P<abc_1>[a-zA-Z\u0430-\u044f\u0410-\u042f]+)\\b(?![-\\w\u2013\xad])', u'\u0441\u0435\u0432\u0435\u0440\u043e-\u0437\u0430\u043f\u0430\u0434\u043d\\g<abc_1>\\n\u0441\u0435\u0432\u0435\u0440\u043e\u0437\u0430\u043f\u0430\u0434\u043d\\g<abc_1>', u'\u0414\u0435\u0444\u0438\u0441?', u'option(LOCALE,"hyphen")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u042e\u044e][\u0413\u0433][\u041e\u043e] [\u0417\u0437][\u0410\u0430][\u041f\u043f][\u0410\u0430][\u0414\u0434][\u041d\u043d](?P<abc_1>[a-zA-Z\u0430-\u044f\u0410-\u042f]+)\\b(?![-\\w\u2013\xad])', u'\u044e\u0433\u043e-\u0437\u0430\u043f\u0430\u0434\u043d\\g<abc_1>\\n\u044e\u0433\u043e\u0437\u0430\u043f\u0430\u0434\u043d\\g<abc_1>', u'\u0414\u0435\u0444\u0438\u0441?', u'option(LOCALE,"hyphen")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0421\u0441][\u0415\u0435][\u0412\u0432][\u0415\u0435][\u0420\u0440][\u041e\u043e] [\u0412\u0432][\u041e\u043e][\u0421\u0441][\u0422\u0442][\u041e\u043e][\u0427\u0447][\u041d\u043d](?P<abc_1>[a-zA-Z\u0430-\u044f\u0410-\u042f]+)\\b(?![-\\w\u2013\xad])', u'\u0441\u0435\u0432\u0435\u0440\u043e-\u0432\u043e\u0441\u0442\u043e\u0447\u043d\\g<abc_1>\\n\u0441\u0435\u0432\u0435\u0440\u043e\u0432\u043e\u0441\u0442\u043e\u0447\u043d\\g<abc_1>', u'\u0414\u0435\u0444\u0438\u0441?', u'option(LOCALE,"hyphen")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u042e\u044e][\u0413\u0433][\u041e\u043e] [\u0412\u0432][\u041e\u043e][\u0421\u0441][\u0422\u0442][\u041e\u043e][\u0427\u0447][\u041d\u043d](?P<abc_1>[a-zA-Z\u0430-\u044f\u0410-\u042f]+)\\b(?![-\\w\u2013\xad])', u'\u044e\u0433\u043e-\u0432\u043e\u0441\u0442\u043e\u0447\u043d\\g<abc_1>\\n\u044e\u0433\u043e\u0432\u043e\u0441\u0442\u043e\u0447\u043d\\g<abc_1>', u'\u0414\u0435\u0444\u0438\u0441?', u'option(LOCALE,"hyphen")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b(?P<adv1_1>[\u041a\u043a][\u0422\u0442][\u041e\u043e]|[\u0427\u0447][\u0422\u0442][\u041e\u043e]|[\u0413\u0433][\u0414\u0434][\u0415\u0435]|[\u0417\u0437][\u0410\u0430][\u0427\u0447][\u0415\u0435][\u041c\u043c]|[\u041a\u043a][\u041e\u043e][\u0415\u0435]) [\u041d\u043d][\u0418\u0438][\u0411\u0431][\u0423\u0443][\u0414\u0434][\u042c\u044c]\\b(?![-\\w\u2013\xad])', u'\\g<adv1_1>-\u043d\u0438\u0431\u0443\u0434\u044c', u'\u0414\u0435\u0444\u0438\u0441?', u'option(LOCALE,"hyphen")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b(?P<adv1_1>[\u041a\u043a][\u0422\u0442][\u041e\u043e]|[\u0427\u0447][\u0422\u0442][\u041e\u043e]|[\u0413\u0433][\u0414\u0434][\u0415\u0435]|[\u0417\u0437][\u0410\u0430][\u0427\u0447][\u0415\u0435][\u041c\u043c]|[\u041a\u043a][\u041e\u043e][\u0415\u0435]) [\u041b\u043b][\u0418\u0438][\u0411\u0431][\u041e\u043e]\\b(?![-\\w\u2013\xad])', u'\\g<adv1_1>-\u043b\u0438\u0431\u043e', u'\u0414\u0435\u0444\u0438\u0441?', u'option(LOCALE,"hyphen")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b(?P<adv1_1>[\u041a\u043a][\u0422\u0442][\u041e\u043e]|[\u0427\u0447][\u0422\u0442][\u041e\u043e]|[\u0413\u0433][\u0414\u0434][\u0415\u0435]|[\u0417\u0437][\u0410\u0430][\u0427\u0447][\u0415\u0435][\u041c\u043c]|[\u041a\u043a][\u041e\u043e][\u0415\u0435]) [\u0422\u0442][\u041e\u043e]\\b(?![-\\w\u2013\xad])', u'\\g<adv1_1>-\u0442\u043e', u'\u0414\u0435\u0444\u0438\u0441?', u'option(LOCALE,"hyphen")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0422\u0442][\u041e\u043e][\u0427\u0447][\u042c\u044c] [\u0412\u0432] [\u0422\u0442][\u041e\u043e][\u0427\u0447][\u042c\u044c]\\b(?![-\\w\u2013\xad])', u'\u0442\u043e\u0447\u044c-\u0432-\u0442\u043e\u0447\u044c', u'\u0414\u0435\u0444\u0438\u0441?', u'option(LOCALE,"hyphen")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0418\u0438][\u0417\u0437] [\u0417\u0437][\u0410\u0430]\\b(?![-\\w\u2013\xad])', u'\u0438\u0437-\u0437\u0430', u'\u0414\u0435\u0444\u0438\u0441?', u'option(LOCALE,"hyphen")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0412\u0432][\u0421\u0441][\u0401\u0451] [\u0422\u0442][\u0410\u0430][\u041a\u043a][\u0418\u0438]\\b(?![-\\w\u2013\xad])', u'\u0432\u0441\u0451-\u0442\u0430\u043a\u0438', u'\u0414\u0435\u0444\u0438\u0441?', u'option(LOCALE,"hyphen")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041a\u043a][\u041e\u043e][\u0415\u0435] [\u041a\u043a][\u0422\u0442][\u041e\u043e]\\b(?![-\\w\u2013\xad])', u'\u043a\u043e\u0435-\u043a\u0442\u043e', u'\u0414\u0435\u0444\u0438\u0441?', u'option(LOCALE,"hyphen")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041a\u043a][\u041e\u043e][\u0415\u0435] [\u0427\u0447][\u0422\u0442][\u041e\u043e]\\b(?![-\\w\u2013\xad])', u'\u043a\u043e\u0435-\u0447\u0442\u043e', u'\u0414\u0435\u0444\u0438\u0441?', u'option(LOCALE,"hyphen")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0412\u0432][\u041e\u043e] [\u0427\u0447][\u0422\u0442][\u041e\u043e] [\u0411\u0431][\u042b\u044b] [\u0422\u0442][\u041e\u043e] [\u041d\u043d][Ee] [\u0421\u0441][\u0422\u0442][\u0410\u0430][\u041b\u043b][\u041e\u043e]\\b(?![-\\w\u2013\xad])', u'\u0432\u043e \u0447\u0442\u043e \u0431\u044b \u0442\u043e \u043d\u0438 \u0441\u0442\u0430\u043b\u043e', u'\u0418\u043c\u0435\u043b\u043e\u0441\u044c \u0432\u0432\u0438\u0434\u0443:', u'option(LOCALE,"multiword")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0412\u0432][\u041e\u043e] [\u0427\u0447][\u0422\u0442][\u041e\u043e][\u0411\u0431][\u042b\u044b] [\u0422\u0442][\u041e\u043e] [\u041d\u043d][Ee] [\u0421\u0441][\u0422\u0442][\u0410\u0430][\u041b\u043b][\u041e\u043e]\\b(?![-\\w\u2013\xad])', u'\u0432\u043e \u0447\u0442\u043e \u0431\u044b \u0442\u043e \u043d\u0438 \u0441\u0442\u0430\u043b\u043e', u'\u0418\u043c\u0435\u043b\u043e\u0441\u044c \u0432\u0432\u0438\u0434\u0443:', u'option(LOCALE,"multiword")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0412\u0432][\u041e\u043e] [\u0427\u0447][\u0422\u0442][\u041e\u043e][\u0411\u0431][\u042b\u044b] [\u0422\u0442][\u041e\u043e] [\u041d\u043d][\u0418\u0438] [\u0421\u0441][\u0422\u0442][\u0410\u0430][\u041b\u043b][\u041e\u043e]\\b(?![-\\w\u2013\xad])', u'\u0432\u043e \u0447\u0442\u043e \u0431\u044b \u0442\u043e \u043d\u0438 \u0441\u0442\u0430\u043b\u043e', u'\u0418\u043c\u0435\u043b\u043e\u0441\u044c \u0432\u0432\u0438\u0434\u0443:', u'option(LOCALE,"multiword")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0422\u0442][\u0410\u0430][\u041a\u043a][\u0416\u0436][\u0415\u0435] [\u041a\u043a][\u0410\u0430][\u041a\u043a] [\u0418\u0438]\\b(?![-\\w\u2013\xad])', u'\u0442\u0430\u043a \u0436\u0435 \u043a\u0430\u043a \u0438', u'\u0421\u043b\u043e\u0436\u043d\u044b\u0439 \u0441\u043e\u044e\u0437.', u'option(LOCALE,"multiword")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0412\u0432][\u041e\u043e] [\u0418\u0438][\u0417\u0437][\u0411\u0431][\u0415\u0435][\u0416\u0436][\u0410\u0430][\u041d\u043d][\u0418\u0438][\u0418\u0438]\\b(?![-\\w\u2013\xad])', u'\u0432\u043e \u0438\u0437\u0431\u0435\u0436\u0430\u043d\u0438\u0435', u'\u0421\u043b\u043e\u0436\u043d\u044b\u0439 \u043f\u0440\u0435\u0434\u043b\u043e\u0433.', u'option(LOCALE,"multiword")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0420\u0440][\u0410\u0430][\u0412\u0432][\u041d\u043d][\u041e\u043e][\u041f\u043f][\u0420\u0440][\u0410\u0430][\u0412\u0432][\u041d\u043d][\u042b\u044b] [\u0414\u0434][\u0420\u0440][\u0423\u0443][\u0413\u0433] [\u0414\u0434][\u0420\u0440][\u0423\u0443][\u0413\u0433][\u0423\u0443]\\b(?![-\\w\u2013\xad])', u'\u0440\u0430\u0432\u043d\u043e\u043f\u0440\u0430\u0432\u043d\u044b \u0434\u0440\u0443\u0433 c \u0434\u0440\u0443\u0433\u043e\u043c', u'\u0420\u0430\u0432\u043d\u043e\u043f\u0440\u0430\u0432\u043d\u044b \u0434\u0440\u0443\u0433 c \u0434\u0440\u0443\u0433\u043e\u043c.', u'option(LOCALE,"multiword")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u0418\u0438] [\u041a\u043a][\u0422\u0442][\u041e\u043e] [\u0418\u0438][\u041d\u043d][\u041e\u043e][\u0419\u0439] [\u041a\u043a][\u0410\u0430][\u041a\u043a]\\b(?![-\\w\u2013\xad])', u'\u043d\u0435 \u043a\u0442\u043e \u0438\u043d\u043e\u0439, \u043a\u0430\u043a', u'\u041e\u0431\u043e\u0440\u043e\u0442.', u'option(LOCALE,"multiword")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u0418\u0438] [\u0427\u0447][\u0422\u0442][\u041e\u043e] [\u0418\u0438][\u041d\u043d][\u041e\u043e][\u0415\u0435] [\u041a\u043a][\u0410\u0430][\u041a\u043a]\\b(?![-\\w\u2013\xad])', u'\u043d\u0435 \u0447\u0442\u043e \u0438\u043d\u043e\u0435, \u043a\u0430\u043a', u'\u041e\u0431\u043e\u0440\u043e\u0442.', u'option(LOCALE,"multiword")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u0415\u0435] [\u041a\u043a][\u0422\u0442][\u041e\u043e] [\u0418\u0438][\u041d\u043d][\u041e\u043e][\u0419\u0439] [\u041a\u043a][\u0410\u0430][\u041a\u043a]\\b(?![-\\w\u2013\xad])', u'\u043d\u0435 \u043a\u0442\u043e \u0438\u043d\u043e\u0439, \u043a\u0430\u043a', u'\u041e\u0431\u043e\u0440\u043e\u0442.', u'option(LOCALE,"multiword")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u0415\u0435] [\u0427\u0447][\u0422\u0442][\u041e\u043e] [\u0418\u0438][\u041d\u043d][\u041e\u043e][\u0415\u0435] [\u041a\u043a][\u0410\u0430][\u041a\u043a]\\b(?![-\\w\u2013\xad])', u'\u043d\u0435 \u0447\u0442\u043e \u0438\u043d\u043e\u0435, \u043a\u0430\u043a', u'\u041e\u0431\u043e\u0440\u043e\u0442.', u'option(LOCALE,"multiword")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u0418\u0438][\u041a\u043a][\u0422\u0442][\u041e\u043e] [\u0418\u0438][\u041d\u043d][\u041e\u043e][\u0419\u0439], [\u041d\u043d][\u0415\u0435]\\b(?![-\\w\u2013\xad])', u'\u043d\u0438\u043a\u0442\u043e \u0438\u043d\u043e\u0439 \u043d\u0435', u'\u041e\u0431\u043e\u0440\u043e\u0442.', u'option(LOCALE,"multiword")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u0418\u0438][\u0427\u0447][\u0422\u0442][\u041e\u043e] [\u0418\u0438][\u041d\u043d][\u041e\u043e][\u0415\u0435], [\u041d\u043d][\u0415\u0435]\\b(?![-\\w\u2013\xad])', u'\u043d\u0438\u0447\u0442\u043e \u0438\u043d\u043e\u0435 \u043d\u0435', u'\u041e\u0431\u043e\u0440\u043e\u0442.', u'option(LOCALE,"multiword")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u0415\u0435][\u041a\u043a][\u0422\u0442][\u041e\u043e] [\u0418\u0438][\u041d\u043d][\u041e\u043e][\u0419\u0439], [\u041d\u043d][\u0415\u0435]\\b(?![-\\w\u2013\xad])', u'\u043d\u0438\u043a\u0442\u043e \u0438\u043d\u043e\u0439 \u043d\u0435', u'\u041e\u0431\u043e\u0440\u043e\u0442.', u'option(LOCALE,"multiword")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u0415\u0435][\u0427\u0447][\u0422\u0442][\u041e\u043e] [\u0418\u0438][\u041d\u043d][\u041e\u043e][\u0415\u0435], [\u041d\u043d][\u0415\u0435]\\b(?![-\\w\u2013\xad])', u'\u043d\u0438\u0447\u0442\u043e \u0438\u043d\u043e\u0435 \u043d\u0435', u'\u041e\u0431\u043e\u0440\u043e\u0442.', u'option(LOCALE,"multiword")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u0415\u0435][\u041a\u043a][\u0422\u0442][\u041e\u043e] [\u0418\u0438][\u041d\u043d][\u041e\u043e][\u0419\u0439] [\u041d\u043d][\u0415\u0435]\\b(?![-\\w\u2013\xad])', u'\u043d\u0438\u043a\u0442\u043e \u0438\u043d\u043e\u0439 \u043d\u0435', u'\u041e\u0431\u043e\u0440\u043e\u0442.', u'option(LOCALE,"multiword")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u0415\u0435][\u0427\u0447][\u0422\u0442][\u041e\u043e] [\u0418\u0438][\u041d\u043d][\u041e\u043e][\u0415\u0435] [\u041d\u043d][\u0415\u0435]\\b(?![-\\w\u2013\xad])', u'\u043d\u0438\u0447\u0442\u043e \u0438\u043d\u043e\u0435 \u043d\u0435', u'\u041e\u0431\u043e\u0440\u043e\u0442.', u'option(LOCALE,"multiword")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u0415\u0435] [\u041a\u043a][\u0422\u0442][\u041e\u043e] [\u0418\u0438][\u041d\u043d][\u041e\u043e][\u0419\u0439], [\u041d\u043d][\u0415\u0435]\\b(?![-\\w\u2013\xad])', u'\u043d\u0438\u043a\u0442\u043e \u0438\u043d\u043e\u0439 \u043d\u0435', u'\u041e\u0431\u043e\u0440\u043e\u0442.', u'option(LOCALE,"multiword")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u0415\u0435] [\u0427\u0447][\u0422\u0442][\u041e\u043e] [\u0418\u0438][\u041d\u043d][\u041e\u043e][\u0415\u0435], [\u041d\u043d][\u0415\u0435]\\b(?![-\\w\u2013\xad])', u'\u043d\u0438\u0447\u0442\u043e \u0438\u043d\u043e\u0435 \u043d\u0435', u'\u041e\u0431\u043e\u0440\u043e\u0442.', u'option(LOCALE,"multiword")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u0415\u0435] [\u041a\u043a][\u0422\u0442][\u041e\u043e] [\u0418\u0438][\u041d\u043d][\u041e\u043e][\u0419\u0439] [\u041d\u043d][\u0415\u0435]\\b(?![-\\w\u2013\xad])', u'\u043d\u0438\u043a\u0442\u043e \u0438\u043d\u043e\u0439 \u043d\u0435', u'\u041e\u0431\u043e\u0440\u043e\u0442.', u'option(LOCALE,"multiword")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u0415\u0435] [\u0427\u0447][\u0422\u0442][\u041e\u043e] [\u0418\u0438][\u041d\u043d][\u041e\u043e][\u0415\u0435] [\u041d\u043d][\u0415\u0435]\\b(?![-\\w\u2013\xad])', u'\u043d\u0438\u0447\u0442\u043e \u0438\u043d\u043e\u0435 \u043d\u0435', u'\u041e\u0431\u043e\u0440\u043e\u0442.', u'option(LOCALE,"multiword")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u0418\u0438][\u041a\u043a][\u0422\u0442][\u041e\u043e] [\u0418\u0438][\u041d\u043d][\u041e\u043e][\u0419\u0439], [\u041d\u043d][\u0415\u0435]\\b(?![-\\w\u2013\xad])', u'\u043d\u0438\u043a\u0442\u043e \u0438\u043d\u043e\u0439 \u043d\u0435', u'\u041e\u0431\u043e\u0440\u043e\u0442.', u'option(LOCALE,"multiword")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u0418\u0438][\u0427\u0447][\u0422\u0442][\u041e\u043e] [\u0418\u0438][\u041d\u043d][\u041e\u043e][\u0415\u0435], [\u041d\u043d][\u0415\u0435]\\b(?![-\\w\u2013\xad])', u'\u043d\u0438\u0447\u0442\u043e \u0438\u043d\u043e\u0435 \u043d\u0435', u'\u041e\u0431\u043e\u0440\u043e\u0442.', u'option(LOCALE,"multiword")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u0418\u0438] [\u041a\u043a][\u0422\u0442][\u041e\u043e] [\u0418\u0438][\u041d\u043d][\u041e\u043e][\u0419\u0439], [\u041d\u043d][\u0415\u0435]\\b(?![-\\w\u2013\xad])', u'\u043d\u0438\u043a\u0442\u043e \u0438\u043d\u043e\u0439 \u043d\u0435', u'\u041e\u0431\u043e\u0440\u043e\u0442.', u'option(LOCALE,"multiword")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u0418\u0438] [\u0427\u0447][\u0422\u0442][\u041e\u043e] [\u0418\u0438][\u041d\u043d][\u041e\u043e][\u0415\u0435], [\u041d\u043d][\u0415\u0435]\\b(?![-\\w\u2013\xad])', u'\u043d\u0438\u0447\u0442\u043e \u0438\u043d\u043e\u0435 \u043d\u0435', u'\u041e\u0431\u043e\u0440\u043e\u0442.', u'option(LOCALE,"multiword")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041a\u043a][\u0410\u0430][\u041a\u043a][\u0411\u0431][\u0423\u0443][\u0414\u0434][\u0422\u0442][\u041e\u043e](?![-\\w\u2013\xad])', u'\u043a\u0430\u043a \u0431\u0443\u0434\u0442\u043e', u'\u0421\u043e\u0441\u0442\u0430\u0432\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u0438\u0446\u0430', u'option(LOCALE,"together")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041f\u043f][\u041e\u043e] [\u041c\u043c][\u0418\u0438][\u041c\u043c][\u041e\u043e]\\b(?![-\\w\u2013\xad])', u'\u043f\u043e\u043c\u0438\u043c\u043e', u'\u041f\u0438\u0448\u0435\u0442\u0441\u044f \u0441\u043b\u0438\u0442\u043d\u043e', u'option(LOCALE,"together")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u0410\u0430] [\u041a\u043a][\u0410\u0430][\u041d\u043d][\u0423\u0443][\u041d\u043d][\u0415\u0435]\\b(?![-\\w\u2013\xad])', u'\u043d\u0430\u043a\u0430\u043d\u0443\u043d\u0435', u'\u0421\u043b\u0438\u0442\u043d\u043e', u'option(LOCALE,"together")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u0410\u0430] [\u041f\u043f][\u041e\u043e][\u0414\u0434][\u041e\u043e][\u0411\u0431][\u0418\u0438][\u0415\u0435]\\b(?![-\\w\u2013\xad])', u'\u043d\u0430\u043f\u043e\u0434\u043e\u0431\u0438\u0435', u'\u0421\u043b\u0438\u0442\u043d\u043e', u'option(LOCALE,"together")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u0410\u0430] [\u041f\u043f][\u0420\u0440][\u041e\u043e][\u0422\u0442][\u0418\u0438][\u0412\u0432]\\b(?![-\\w\u2013\xad])', u'\u043d\u0430\u043f\u0440\u043e\u0442\u0438\u0432', u'\u0421\u043b\u0438\u0442\u043d\u043e', u'option(LOCALE,"together")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0412\u0432] [\u041d\u043d][\u0418\u0438][\u0417\u0437][\u0423\u0443]\\b(?![-\\w\u2013\xad])', u'\u0432\u043d\u0438\u0437\u0443', u'\u0421\u043b\u0438\u0442\u043d\u043e', u'option(LOCALE,"together")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0421\u0441] [\u041d\u043d][\u0418\u0438][\u0417\u0437][\u0423\u0443]\\b(?![-\\w\u2013\xad])', u'\u0441\u043d\u0438\u0437\u0443', u'\u0421\u043b\u0438\u0442\u043d\u043e', u'option(LOCALE,"together")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u0410\u0430] [\u0412\u0432][\u0415\u0435][\u0420\u0440][\u0425\u0445][\u0423\u0443]\\b(?![-\\w\u2013\xad])', u'\u043d\u0430\u0432\u0435\u0440\u0445\u0443', u'\u0421\u043b\u0438\u0442\u043d\u043e', u'option(LOCALE,"together")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0412\u0432] [\u0412\u0432][\u0415\u0435][\u0420\u0440][\u0425\u0445][\u0423\u0443]\\b(?![-\\w\u2013\xad])', u'\u0432\u0432\u0435\u0440\u0445\u0443', u'\u0421\u043b\u0438\u0442\u043d\u043e', u'option(LOCALE,"together")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0421\u0441] [\u0412\u0432][\u0415\u0435][\u0420\u0440][\u0425\u0445][\u0423\u0443]\\b(?![-\\w\u2013\xad])', u'\u0441\u0432\u0435\u0440\u0445\u0443', u'\u0421\u043b\u0438\u0442\u043d\u043e', u'option(LOCALE,"together")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0421\u0441] [\u0412\u0432][\u0415\u0435][\u0420\u0440][\u0425\u0445]\\b(?![-\\w\u2013\xad])', u'\u0441\u0432\u0435\u0440\u0445', u'\u0421\u043b\u0438\u0442\u043d\u043e', u'option(LOCALE,"together")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0421\u0441] [\u0412\u0432][\u042b\u044b][\u0428\u0448][\u0415\u0435]\\b(?![-\\w\u2013\xad])', u'\u0441\u0432\u044b\u0448\u0435', u'\u0421\u043b\u0438\u0442\u043d\u043e', u'option(LOCALE,"together")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0421\u0441][\u041e\u043e] [\u0413\u0433][\u041b\u043b][\u0410\u0430][\u0421\u0441][\u041d\u043d][\u041e\u043e]\\b(?![-\\w\u2013\xad])', u'\u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e', u'\u0421\u043b\u0438\u0442\u043d\u043e', u'option(LOCALE,"together")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0412\u0432] [\u0413\u0433][\u041b\u043b][\u0423\u0443][\u0411\u0431][\u042c\u044c]\\b(?![-\\w\u2013\xad])', u'\u0432\u0433\u043b\u0443\u0431\u044c', u'\u0421\u043b\u0438\u0442\u043d\u043e', u'option(LOCALE,"together")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0412\u0432] [\u0414\u0434][\u041e\u043e][\u041b\u043b][\u042c\u044c]\\b(?![-\\w\u2013\xad])', u'\u0432\u0434\u043e\u043b\u044c', u'\u0421\u043b\u0438\u0442\u043d\u043e', u'option(LOCALE,"together")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0412\u0432] [\u0417\u0437][\u0410\u0430][\u041c\u043c][\u0415\u0435][\u041d\u043d]\\b(?![-\\w\u2013\xad])', u'\u0432\u0437\u0430\u043c\u0435\u043d', u'\u0421\u043b\u0438\u0442\u043d\u043e', u'option(LOCALE,"together")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b(?P<d2_1>\\d\\d)(?P<d_1>\\d\\d\\d)\\b(?![-\\w\u2013\xad])', u'\\g<d2_1>\xa0\\g<d_1>', u'\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0440\u0430\u0437\u0440\u044f\u0434\u043e\u0432 (ISO)?', u'option(LOCALE,"numsep")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b(?P<D_1>\\d|\\d\\d|\\d\\d\\d)(?P<d_1>\\d\\d\\d)(?P<d_2>\\d\\d\\d)\\b(?![-\\w\u2013\xad])', u'\\g<D_1>\xa0\\g<d_1>\xa0\\g<d_2>', u'\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0440\u0430\u0437\u0440\u044f\u0434\u043e\u0432 (ISO)?', u'option(LOCALE,"numsep")'], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b(?P<D_1>\\d|\\d\\d|\\d\\d\\d)(?P<d_1>\\d\\d\\d)(?P<d_2>\\d\\d\\d)(?P<d_3>\\d\\d\\d)\\b(?![-\\w\u2013\xad])', u'\\g<D_1>\xa0\\g<d_1>\xa0\\g<d_2>\xa0\\g<d_3>', u'\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0440\u0430\u0437\u0440\u044f\u0434\u043e\u0432 (ISO)?', u'option(LOCALE,"numsep")'], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<W_1>[-\\w]{3,})(?: [-\u2013\\w\u201c\u201d]+)* \\1(?![-\\w\u2013\xad])', u'\\g<W_1>', u'\u041f\u043e\u0432\u0442\u043e\u0440 \u0441\u043b\u043e\u0432\u0430?', u'option(LOCALE,"dup")'], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<W_1>[-\\w]{3,})[;,:]?(?: [-\u2013\\w\u201c\u201d]+[;,:]?)* \\1(?![-\\w\u2013\xad])', u'\\g<W_1>', u'\u041f\u043e\u0432\u0442\u043e\u0440 \u0441\u043b\u043e\u0432\u0430?', u'option(LOCALE,"dup2")']]
+dic = [[u'(?iu)(?<![-\\w\u2013.,\xad])\\b[Ff][Oo][Oo]\\b(?![-\\w\u2013\xad])', u'bar', u'test', False, 0], [u'(?iu)(?<![-\\w\u2013.,\xad]) ([.?!,:;)\u201d]($| ))(?![-\\w\u2013\xad])', u'\\1', u'\u041b\u0438\u0448\u043d\u0438\u0439 \u043f\u0440\u043e\u0431\u0435\u043b \u043f\u0435\u0440\u0435\u0434 \u0437\u043d\u0430\u043a\u043e\u043c \u043f\u0443\u043d\u043a\u0442\u0443\u0430\u0446\u0438\u0438.', u'option(LOCALE,"space")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])([(\u201c]) (?![-\\w\u2013\xad])', u'\\1', u'\u041b\u0438\u0448\u043d\u0438\u0439 \u043f\u0440\u043e\u0431\u0435\u043b \u043f\u043e\u0441\u043b\u0435 \u0437\u043d\u0430\u043a\u0430 \u043f\u0443\u043d\u043a\u0442\u0443\u0430\u0446\u0438\u0438.', u'option(LOCALE,"space")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<Abc_1>[a-zA-ZA-Z\u0430-\u044f\u0410-\u042f\u0410-\u042f]+)(?P<punct_1>[?!,:;%\u2030\u2031\u02da\u201c\u201d\u2018\u201e])(?P<Abc_2>[a-zA-ZA-Z\u0430-\u044f\u0410-\u042f\u0410-\u042f]+)(?![-\\w\u2013\xad])', u'\\g<Abc_1>\\g<punct_1> \\g<Abc_2>', u'\u041f\u0440\u043e\u043f\u0443\u0449\u0435\u043d \u043f\u0440\u043e\u0431\u0435\u043b?', u'option(LOCALE,"space")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<abc_1>[a-zA-Z\u0430-\u044f\u0410-\u042f]+)[.](?P<ABC_1>[A-Z\u0410-\u042f]+)(?![-\\w\u2013\xad])', u'\\g<abc_1>. \\g<ABC_1>', u'\u041f\u0440\u043e\u043f\u0443\u0449\u0435\u043d \u043f\u0440\u043e\u0431\u0435\u043b?', u'option(LOCALE,"space")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[.]{3}(?![-\\w\u2013\xad])', u'\u2026', u'\u0421\u0438\u043c\u0432\u043e\u043b \u0442\u0440\u043e\u0435\u0442\u043e\u0447\u0438\u044f.', u'option(LOCALE,"typographica")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])(\\d+)[Xx](\\d+)(?![-\\w\u2013\xad])', u'\\1\xd7\\2', u'\u0417\u043d\u0430\u043a \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f.', u'option(LOCALE,"typographica")', 0], [u'(?iu)((?<=[!?.] )|^)[-\u2014] (?![-\\w\u2013\xad])', u'\u2013 ', u'\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430 \u0442\u0438\u0440\u0435 (n-dash)?', u'option(LOCALE,"typographica")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad]) [-\u2014]([ ,;])(?![-\\w\u2013\xad])', u' \u2013\\1', u'\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430 \u0442\u0438\u0440\u0435 (n-dash)?', u'option(LOCALE,"typographica")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[,]{2}(?![-\\w\u2013\xad])', u',', u'\u0414\u0432\u0435 \u0437\u0430\u043f\u044f\u0442\u044b\u0435 \u043f\u043e\u0434\u0440\u044f\u0434.', u'option(LOCALE,"comma")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[ ](?P<abbr_1>[\u0420\u0440][\u0423\u0443][\u0411\u0431]|[\u041a\u043a][\u041e\u043e][\u041f\u043f]|[\u0413\u0433][\u0420\u0440][\u041d\u043d]|[\u0422\u0442][\u042b\u044b][\u0421\u0441]|[\u0423\u0443][\u041b\u043b]|[\u041a\u043a][\u0412\u0432]|[\u041f\u043f][\u041e\u043e][\u0421\u0441]|[\u0421\u0441][\u0422\u0442]|[\u041f\u043f][\u0420\u0440]|[\u041f\u043f][\u0420\u0440][\u041e\u043e][\u0421\u0441][\u041f\u043f]|[\u0415\u0435][\u0414\u0434]|[\u042d\u044d][\u041a\u043a][\u0417\u0437]|[\u0422\u0442][\u0415\u0435][\u041b\u043b]|[\u0418\u0438][\u0421\u0441][\u041f\u043f])[ ](?![-\\w\u2013\xad])', u' \\g<abbr_1>. ', u'\u0422\u043e\u0447\u043a\u0430 \u043f\u043e\u0441\u043b\u0435 \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u0439.', u'option(LOCALE,"abbreviation")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])(^|\\b|(?P<punct_1>[?!,:;%\u2030\u2031\u02da\u201c\u201d\u2018\u201e])|[.]) {2,3}(\\b|$)(?![-\\w\u2013\xad])', u'\\1 ', u'\u041b\u0438\u0448\u043d\u0438\u0439 \u043f\u0440\u043e\u0431\u0435\u043b.', u'option(LOCALE,"space")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\"(\\w[^\\"\u201c\u201d]*[\\w.?!,])\\"(?![-\\w\u2013\xad])', u'\xab\\1\xbb', u'\u041a\u0430\u0432\u044b\u0447\u043a\u0438.', u'option(LOCALE,"quotation")', 0], [u"(?iu)(?<![-\\w\u2013.,\xad])\\B'(\\w[^']*[\\w.?!,])'\\B(?![-\\w\u2013\xad])", u'\u2018\\1\u2019', u'\u041a\u0430\u0432\u044b\u0447\u043a\u0438.', u'option(LOCALE,"quotation")', 0], [u"(?iu)(?<![-\\w\u2013.,\xad])(?iu)(?P<Abc_1>[a-zA-ZA-Z\u0430-\u044f\u0410-\u042f\u0410-\u042f]+)'(?P<w_1>\\w*)(?![-\\w\u2013\xad])", u'\\g<Abc_1>\u2019\\g<w_1>', u'\u0410\u043f\u043e\u0441\u0442\u0440\u043e\u0444.', u'option(LOCALE,"quotation")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<abc_1>[a-zA-Z\u0430-\u044f\u0410-\u042f]+)[ ][\u0410\u0430][ ](?![-\\w\u2013\xad])', u'\\g<abc_1>, \u0430 ', u'\u041f\u0440\u043e\u043f\u0443\u0449\u0435\u043d\u0430 \u0437\u0430\u043f\u044f\u0442\u0430\u044f \u043f\u0435\u0440\u0435\u0434 \u0430.', u'option(LOCALE,"comma")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<abc_1>[a-zA-Z\u0430-\u044f\u0410-\u042f]+)[ ][\u041d\u043d][\u041e\u043e][ ](?![-\\w\u2013\xad])', u'\\g<abc_1>, \u043d\u043e ', u'\u041f\u0440\u043e\u043f\u0443\u0449\u0435\u043d\u0430 \u0437\u0430\u043f\u044f\u0442\u0430\u044f \u043f\u0435\u0440\u0435\u0434 \u043d\u043e.', u'option(LOCALE,"comma")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<abc_1>[a-zA-Z\u0430-\u044f\u0410-\u042f]+), (?P<novvod_1>[\u0410\u0430][\u0412\u0432][\u041e\u043e][\u0421\u0441][\u042c\u044c]|[\u0411\u0431][\u0423\u0443][\u041a\u043a][\u0412\u0432][\u0410\u0430][\u041b\u043b][\u042c\u044c][\u041d\u043d][\u041e\u043e]|[\u0411\u0431][\u0423\u0443][\u0414\u0434][\u0422\u0442][\u041e\u043e]|[\u0412\u0432][\u0414\u0434][\u041e\u043e][\u0411\u0431][\u0410\u0430][\u0412\u0432][\u041e\u043e][\u041a\u043a]|[\u0412\u0432][\u0414\u0434][\u0420\u0440][\u0423\u0443][\u0413\u0433]|[\u0412\u0432][\u0415\u0435][\u0414\u0434][\u042c\u044c]|[\u0412\u0432][\u041e\u043e][\u0422\u0442]|[\u0414\u0434][\u0410\u0430][\u0416\u0436][\u0415\u0435]|[\u0418\u0438][\u0421\u0441][\u041a\u043a][\u041b\u043b][\u042e\u044e][\u0427\u0447][\u0418\u0438][\u0422\u0442][\u0415\u0435][\u041b\u043b][\u042c\u044c][\u041d\u043d][\u041e\u043e]|[\u0418\u0438][\u041c\u043c][\u0415\u0435][\u041d\u043d][\u041d\u043d][\u041e\u043e]|[\u041d\u043d][\u0415\u0435][\u0411\u0431][\u041e\u043e][\u0421\u0441][\u042c\u044c]|[\u041f\u043f][\u0420\u0440][\u0418\u0438][\u0411\u0431][\u041b\u043b][\u0418\u0438][\u0417\u0437][\u0418\u0438][\u0422\u0442][\u0415\u0435][\u041b\u043b][\u042c\u044c][\u041d\u043d][\u041e\u043e]|[\u041f\u043f][\u0420\u0440][\u0418\u0438][\u041c\u043c][\u0415\u0435][\u0420\u0440][\u041d\u043d][\u041e\u043e]|[\u041f\u043f][\u0420\u0440][\u0418\u0438][\u0422\u0442][\u041e\u043e][\u041c\u043c]|[\u041f\u043f][\u041e\u043e][\u0427\u0447][\u0422\u0442][\u0418\u0438]|[\u041f\u043f][\u041e\u043e][\u042d\u044d][\u0422\u0442][\u041e\u043e][\u041c\u043c][\u0423\u0443]|[\u041f\u043f][\u0420\u0440][\u041e\u043e][\u0421\u0441][\u0422\u0442][\u041e\u043e]|[\u0420\u0440][\u0415\u0435][\u0428\u0448][\u0418\u0438][\u0422\u0442][\u0415\u0435][\u041b\u043b][\u042c\u044c][\u041d\u043d][\u041e\u043e]|[\u0421\u0441][\u041b\u043b][\u041e\u043e][\u0412\u0432][\u041d\u043d][\u041e\u043e]|[\u042f\u044f][\u041a\u043a][\u041e\u043e][\u0411\u0431][\u042b\u044b]|[\u0412\u0432] [\u0414\u0434][\u041e\u043e][\u0412\u0432][\u0415\u0435][\u0420\u0440][\u0428\u0448][\u0415\u0435][\u041d\u043d][\u0418\u0438][\u0415\u0435]|[\u0412\u0432] [\u041a\u043a][\u041e\u043e][\u041d\u043d][\u0415\u0435][\u0427\u0447][\u041d\u043d][\u041e\u043e][\u041c\u043c] [\u0421\u0441][\u0427\u0447][\u0415\u0435][\u0422\u0442][\u0415\u0435]|[\u0412\u0432][\u0420\u0440][\u042f\u044f][\u0414\u0434] [\u041b\u043b][\u0418\u0438]|[\u0412\u0432][\u0421\u0441][\u0415\u0435]-[\u0422\u0442][\u0410\u0430][\u041a\u043a][\u0418\u0438]|[\u041a\u043a][\u0410\u0430][\u041a\u043a] [\u0411\u0431][\u0423\u0443][\u0414\u0434][\u0422\u0442][\u041e\u043e]|[\u041a\u043a][\u0410\u0430][\u041a\u043a] [\u0411\u0431][\u042b\u044b]|[\u041a\u043a][\u0410\u0430][\u041a\u043a] [\u0420\u0440][\u0410\u0430][\u0417\u0437]|[\u041a\u043a] [\u0422\u0442][\u041e\u043e][\u041c\u043c][\u0423\u0443] [\u0416\u0436][\u0415\u0435]|[\u041c\u043c][\u0415\u0435][\u0416\u0436][\u0414\u0434][\u0423\u0443] [\u0422\u0442][\u0415\u0435][\u041c\u043c]|[\u041f\u043f][\u041e\u043e] [\u041f\u043f][\u0420\u0440][\u0415\u0435][\u0414\u0434][\u041b\u043b][\u041e\u043e][\u0416\u0436][\u0415\u0435][\u041d\u043d][\u0418\u0438][\u042e\u044e]|[\u041f\u043f][\u041e\u043e] [\u041f\u043f][\u041e\u043e][\u0421\u0441][\u0422\u0442][\u0410\u0430][\u041d\u043d][\u041e\u043e][\u0412\u0432][\u041b\u043b][\u0415\u0435][\u041d\u043d][\u0418\u0438][\u042e\u044e]|[\u041f\u043f][\u041e\u043e] [\u0420\u0440][\u0415\u0435][\u0428\u0448][\u0415\u0435][\u041d\u043d][\u0418\u0438][\u042e\u044e]),(?![-\\w\u2013\xad])', u'\\g<abc_1> \\g<novvod_1>', u'\u0421\u043b\u043e\u0432\u0430, \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0449\u0438\u0435\u0441\u044f \u0432\u0432\u043e\u0434\u043d\u044b\u043c\u0438.', u'option(LOCALE,"comma")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<abc_1>[a-zA-Z\u0430-\u044f\u0410-\u042f]+) (?P<vvod_1>[\u0418\u0438][\u0422\u0442][\u0410\u0430][\u041a\u043a]|[\u0421\u0441][\u041b\u043b][\u0415\u0435][\u0414\u0434][\u041e\u043e][\u0412\u0432][\u0410\u0430][\u0422\u0442][\u0415\u0435][\u041b\u043b][\u042c\u044c][\u041d\u043d][\u041e\u043e]|[\u0412\u0432][\u041e\u043e]-[\u041f\u043f][\u0415\u0435][\u0420\u0440][\u0412\u0432][\u042b\u044b][\u0425\u0445]|[\u0412\u0432][\u041e\u043e]-[\u0412\u0432][\u0422\u0442][\u041e\u043e][\u0420\u0440][\u042b\u044b][\u0425\u0445]|[\u0412\u0432]-[\u0422\u0442][\u0420\u0440][\u0415\u0435][\u0422\u0442][\u042c\u044c][\u0418\u0438][\u0425\u0445]|[\u0412\u0432]-[\u0427\u0447][\u0415\u0435][\u0422\u0442][\u0412\u0432][\u0415\u0435][\u0420\u0440][\u0422\u0442][\u042b\u044b][\u0425\u0445]|[\u0412\u0432]-[\u041f\u043f][\u042f\u044f][\u0422\u0442][\u042b\u044b][\u0425\u0445]|[\u041f\u043f][\u041e\u043e][\u0416\u0436][\u0410\u0430][\u041b\u043b][\u0423\u0443][\u0419\u0439][\u0421\u0441][\u0422\u0442][\u0410\u0430]|[\u041a\u043a][\u0410\u0430][\u041a\u043a] [\u041d\u043d][\u0410\u0430][\u0420\u0440][\u041e\u043e][\u0427\u0447][\u041d\u043d][\u041e\u043e]|[\u041a\u043a][\u0410\u0430][\u041a\u043a] [\u0418\u0438][\u0421\u0441][\u041a\u043a][\u041b\u043b][\u042e\u044e][\u0427\u0447][\u0415\u0435][\u041d\u043d][\u0418\u0438][\u0415\u0435]|[\u041a\u043a][\u0410\u0430][\u041a\u043a] [\u041f\u043f][\u0420\u0440][\u0410\u0430][\u0412\u0432][\u0418\u0438][\u041b\u043b][\u041e\u043e])(?![-\\w\u2013\xad])', u'\\g<abc_1>, \\g<vvod_1>,', u'\u0421\u043b\u043e\u0432\u0430, \u044f\u0432\u043b\u044f\u044e\u0449\u0438\u0435\u0441\u044f \u0432\u0432\u043e\u0434\u043d\u044b\u043c\u0438, \u0432\u044b\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u0437\u0430\u043f\u044f\u0442\u044b\u043c\u0438.', u'option(LOCALE,"comma")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041b\u043b][\u041e\u043e][\u0416\u0436][\u0418\u0438][\u0422\u0442][\u042c\u044c]\\b(?![-\\w\u2013\xad])', u'\u043a\u043b\u0430\u0441\u0442\u044c', u'\u041e\u0431\u0449\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438', u'option(LOCALE,"common")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041b\u043b][\u042f\u044f][\u0416\u0436][\u042c\u044c]\\b(?![-\\w\u2013\xad])', u'\u043b\u044f\u0433', u'\u041e\u0431\u0449\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438', u'option(LOCALE,"common")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0415\u0435][\u0425\u0445][\u0410\u0430][\u0419\u0439]\\b(?![-\\w\u2013\xad])', u'\u043f\u043e\u0435\u0437\u0436\u0430\u0439', u'\u041e\u0431\u0449\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438', u'option(LOCALE,"common")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0418\u0438][\u0425\u0445][\u041d\u043d](?P<abc_1>[a-zA-Z\u0430-\u044f\u0410-\u042f]+)\\b(?![-\\w\u2013\xad])', u'\u0438\u0445', u'\u041f\u0440\u0438\u0442\u044f\u0436\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e\u0438\u043c\u0435\u043d\u0438\u0435 \u043d\u0435 \u0441\u043a\u043b\u043e\u043d\u044f\u0435\u0442\u0441\u044f', u'option(LOCALE,"common")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[\u0416\u0436][\u042b\u044b](?![-\\w\u2013\xad])', u'\u0436\u0438', u'\u0427\u0435\u0440\u0435\u0437 "\u0438"', u'option(LOCALE,"common")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])[\u0428\u0448][\u042b\u044b](?![-\\w\u2013\xad])', u'\u0448\u0438', u'\u0427\u0435\u0440\u0435\u0437 "\u0438"', u'option(LOCALE,"common")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u041e\u043e][\u0420\u0440][\u0414\u0434] [\u041e\u043e][\u0421\u0441][\u0422\u0442]\\b(?![-\\w\u2013\xad])', u'\u043d\u043e\u0440\u0434-\u043e\u0441\u0442', u'\u0414\u0435\u0444\u0438\u0441?', u'option(LOCALE,"hyphen")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u041e\u043e][\u0420\u0440][\u0414\u0434] [\u0412\u0432][\u0415\u0435][\u0421\u0441][\u0422\u0442]\\b(?![-\\w\u2013\xad])', u'\u043d\u043e\u0440\u0434-\u0432\u0435\u0441\u0442', u'\u0414\u0435\u0444\u0438\u0441?', u'option(LOCALE,"hyphen")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0417\u0437][\u042e\u044e][\u0419\u0439][\u0414\u0434] [\u041e\u043e][\u0421\u0441][\u0422\u0442]\\b(?![-\\w\u2013\xad])', u'\u0437\u044e\u0439\u0434-\u043e\u0441\u0442', u'\u0414\u0435\u0444\u0438\u0441?', u'option(LOCALE,"hyphen")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0417\u0437][\u042e\u044e][\u0419\u0439][\u0414\u0434] [\u0412\u0432][\u0415\u0435][\u0421\u0441][\u0422\u0442]\\b(?![-\\w\u2013\xad])', u'\u0437\u044e\u0439\u0434-\u0432\u0435\u0441\u0442', u'\u0414\u0435\u0444\u0438\u0441?', u'option(LOCALE,"hyphen")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0421\u0441][\u0415\u0435][\u0412\u0432][\u0415\u0435][\u0420\u0440][\u041e\u043e] [\u0417\u0437][\u0410\u0430][\u041f\u043f][\u0410\u0430][\u0414\u0434][\u041d\u043d](?P<abc_1>[a-zA-Z\u0430-\u044f\u0410-\u042f]+)\\b(?![-\\w\u2013\xad])', u'\u0441\u0435\u0432\u0435\u0440\u043e-\u0437\u0430\u043f\u0430\u0434\u043d\\g<abc_1>', u'\u0414\u0435\u0444\u0438\u0441?', u'option(LOCALE,"hyphen")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u042e\u044e][\u0413\u0433][\u041e\u043e] [\u0417\u0437][\u0410\u0430][\u041f\u043f][\u0410\u0430][\u0414\u0434][\u041d\u043d](?P<abc_1>[a-zA-Z\u0430-\u044f\u0410-\u042f]+)\\b(?![-\\w\u2013\xad])', u'\u044e\u0433\u043e-\u0437\u0430\u043f\u0430\u0434\u043d\\g<abc_1>', u'\u0414\u0435\u0444\u0438\u0441?', u'option(LOCALE,"hyphen")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0421\u0441][\u0415\u0435][\u0412\u0432][\u0415\u0435][\u0420\u0440][\u041e\u043e] [\u0412\u0432][\u041e\u043e][\u0421\u0441][\u0422\u0442][\u041e\u043e][\u0427\u0447][\u041d\u043d](?P<abc_1>[a-zA-Z\u0430-\u044f\u0410-\u042f]+)\\b(?![-\\w\u2013\xad])', u'\u0441\u0435\u0432\u0435\u0440\u043e-\u0432\u043e\u0441\u0442\u043e\u0447\u043d\\g<abc_1>', u'\u0414\u0435\u0444\u0438\u0441?', u'option(LOCALE,"hyphen")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u042e\u044e][\u0413\u0433][\u041e\u043e] [\u0412\u0432][\u041e\u043e][\u0421\u0441][\u0422\u0442][\u041e\u043e][\u0427\u0447][\u041d\u043d](?P<abc_1>[a-zA-Z\u0430-\u044f\u0410-\u042f]+)\\b(?![-\\w\u2013\xad])', u'\u044e\u0433\u043e-\u0432\u043e\u0441\u0442\u043e\u0447\u043d\\g<abc_1>', u'\u0414\u0435\u0444\u0438\u0441?', u'option(LOCALE,"hyphen")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b(?P<adv1_1>[\u041a\u043a][\u0422\u0442][\u041e\u043e]|[\u0427\u0447][\u0422\u0442][\u041e\u043e]|[\u0413\u0433][\u0414\u0434][\u0415\u0435]|[\u0417\u0437][\u0410\u0430][\u0427\u0447][\u0415\u0435][\u041c\u043c]|[\u041a\u043a][\u041e\u043e][\u0415\u0435]) [\u041d\u043d][\u0418\u0438][\u0411\u0431][\u0423\u0443][\u0414\u0434][\u042c\u044c]\\b(?![-\\w\u2013\xad])', u'\\g<adv1_1>-\u043d\u0438\u0431\u0443\u0434\u044c', u'\u0414\u0435\u0444\u0438\u0441?', u'option(LOCALE,"hyphen")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b(?P<adv1_1>[\u041a\u043a][\u0422\u0442][\u041e\u043e]|[\u0427\u0447][\u0422\u0442][\u041e\u043e]|[\u0413\u0433][\u0414\u0434][\u0415\u0435]|[\u0417\u0437][\u0410\u0430][\u0427\u0447][\u0415\u0435][\u041c\u043c]|[\u041a\u043a][\u041e\u043e][\u0415\u0435]) [\u041b\u043b][\u0418\u0438][\u0411\u0431][\u041e\u043e]\\b(?![-\\w\u2013\xad])', u'\\g<adv1_1>-\u043b\u0438\u0431\u043e', u'\u0414\u0435\u0444\u0438\u0441?', u'option(LOCALE,"hyphen")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b(?P<adv1_1>[\u041a\u043a][\u0422\u0442][\u041e\u043e]|[\u0427\u0447][\u0422\u0442][\u041e\u043e]|[\u0413\u0433][\u0414\u0434][\u0415\u0435]|[\u0417\u0437][\u0410\u0430][\u0427\u0447][\u0415\u0435][\u041c\u043c]|[\u041a\u043a][\u041e\u043e][\u0415\u0435]) [\u0422\u0442][\u041e\u043e]\\b(?![-\\w\u2013\xad])', u'\\g<adv1_1>-\u0442\u043e', u'\u0414\u0435\u0444\u0438\u0441?', u'option(LOCALE,"hyphen")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0422\u0442][\u041e\u043e][\u0427\u0447][\u042c\u044c] [\u0412\u0432] [\u0422\u0442][\u041e\u043e][\u0427\u0447][\u042c\u044c]\\b(?![-\\w\u2013\xad])', u'\u0442\u043e\u0447\u044c-\u0432-\u0442\u043e\u0447\u044c', u'\u0414\u0435\u0444\u0438\u0441?', u'option(LOCALE,"hyphen")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0418\u0438][\u0417\u0437] [\u0417\u0437][\u0410\u0430]\\b(?![-\\w\u2013\xad])', u'\u0438\u0437-\u0437\u0430', u'\u0414\u0435\u0444\u0438\u0441?', u'option(LOCALE,"hyphen")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0412\u0432][\u0421\u0441][\u0401\u0451] [\u0422\u0442][\u0410\u0430][\u041a\u043a][\u0418\u0438]\\b(?![-\\w\u2013\xad])', u'\u0432\u0441\u0451-\u0442\u0430\u043a\u0438', u'\u0414\u0435\u0444\u0438\u0441?', u'option(LOCALE,"hyphen")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041a\u043a][\u041e\u043e][\u0415\u0435] [\u041a\u043a][\u0422\u0442][\u041e\u043e]\\b(?![-\\w\u2013\xad])', u'\u043a\u043e\u0435-\u043a\u0442\u043e', u'\u0414\u0435\u0444\u0438\u0441?', u'option(LOCALE,"hyphen")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041a\u043a][\u041e\u043e][\u0415\u0435] [\u0427\u0447][\u0422\u0442][\u041e\u043e]\\b(?![-\\w\u2013\xad])', u'\u043a\u043e\u0435-\u0447\u0442\u043e', u'\u0414\u0435\u0444\u0438\u0441?', u'option(LOCALE,"hyphen")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0412\u0432][\u041e\u043e] [\u0427\u0447][\u0422\u0442][\u041e\u043e] [\u0411\u0431][\u042b\u044b] [\u0422\u0442][\u041e\u043e] [\u041d\u043d][Ee] [\u0421\u0441][\u0422\u0442][\u0410\u0430][\u041b\u043b][\u041e\u043e]\\b(?![-\\w\u2013\xad])', u'\u0432\u043e \u0447\u0442\u043e \u0431\u044b \u0442\u043e \u043d\u0438 \u0441\u0442\u0430\u043b\u043e', u'\u0418\u043c\u0435\u043b\u043e\u0441\u044c \u0432\u0432\u0438\u0434\u0443:', u'option(LOCALE,"multiword")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0412\u0432][\u041e\u043e] [\u0427\u0447][\u0422\u0442][\u041e\u043e][\u0411\u0431][\u042b\u044b] [\u0422\u0442][\u041e\u043e] [\u041d\u043d][Ee] [\u0421\u0441][\u0422\u0442][\u0410\u0430][\u041b\u043b][\u041e\u043e]\\b(?![-\\w\u2013\xad])', u'\u0432\u043e \u0447\u0442\u043e \u0431\u044b \u0442\u043e \u043d\u0438 \u0441\u0442\u0430\u043b\u043e', u'\u0418\u043c\u0435\u043b\u043e\u0441\u044c \u0432\u0432\u0438\u0434\u0443:', u'option(LOCALE,"multiword")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0412\u0432][\u041e\u043e] [\u0427\u0447][\u0422\u0442][\u041e\u043e][\u0411\u0431][\u042b\u044b] [\u0422\u0442][\u041e\u043e] [\u041d\u043d][\u0418\u0438] [\u0421\u0441][\u0422\u0442][\u0410\u0430][\u041b\u043b][\u041e\u043e]\\b(?![-\\w\u2013\xad])', u'\u0432\u043e \u0447\u0442\u043e \u0431\u044b \u0442\u043e \u043d\u0438 \u0441\u0442\u0430\u043b\u043e', u'\u0418\u043c\u0435\u043b\u043e\u0441\u044c \u0432\u0432\u0438\u0434\u0443:', u'option(LOCALE,"multiword")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0422\u0442][\u0410\u0430][\u041a\u043a][\u0416\u0436][\u0415\u0435] [\u041a\u043a][\u0410\u0430][\u041a\u043a] [\u0418\u0438]\\b(?![-\\w\u2013\xad])', u'\u0442\u0430\u043a \u0436\u0435 \u043a\u0430\u043a \u0438', u'\u0421\u043b\u043e\u0436\u043d\u044b\u0439 \u0441\u043e\u044e\u0437.', u'option(LOCALE,"multiword")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0412\u0432][\u041e\u043e] [\u0418\u0438][\u0417\u0437][\u0411\u0431][\u0415\u0435][\u0416\u0436][\u0410\u0430][\u041d\u043d][\u0418\u0438][\u0418\u0438]\\b(?![-\\w\u2013\xad])', u'\u0432\u043e \u0438\u0437\u0431\u0435\u0436\u0430\u043d\u0438\u0435', u'\u0421\u043b\u043e\u0436\u043d\u044b\u0439 \u043f\u0440\u0435\u0434\u043b\u043e\u0433.', u'option(LOCALE,"multiword")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0420\u0440][\u0410\u0430][\u0412\u0432][\u041d\u043d][\u041e\u043e][\u041f\u043f][\u0420\u0440][\u0410\u0430][\u0412\u0432][\u041d\u043d][\u042b\u044b] [\u0414\u0434][\u0420\u0440][\u0423\u0443][\u0413\u0433] [\u0414\u0434][\u0420\u0440][\u0423\u0443][\u0413\u0433][\u0423\u0443]\\b(?![-\\w\u2013\xad])', u'\u0440\u0430\u0432\u043d\u043e\u043f\u0440\u0430\u0432\u043d\u044b \u0434\u0440\u0443\u0433 c \u0434\u0440\u0443\u0433\u043e\u043c', u'\u0420\u0430\u0432\u043d\u043e\u043f\u0440\u0430\u0432\u043d\u044b \u0434\u0440\u0443\u0433 c \u0434\u0440\u0443\u0433\u043e\u043c.', u'option(LOCALE,"multiword")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u0418\u0438] [\u041a\u043a][\u0422\u0442][\u041e\u043e] [\u0418\u0438][\u041d\u043d][\u041e\u043e][\u0419\u0439] [\u041a\u043a][\u0410\u0430][\u041a\u043a]\\b(?![-\\w\u2013\xad])', u'\u043d\u0435 \u043a\u0442\u043e \u0438\u043d\u043e\u0439, \u043a\u0430\u043a', u'\u041e\u0431\u043e\u0440\u043e\u0442.', u'option(LOCALE,"multiword")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u0418\u0438] [\u0427\u0447][\u0422\u0442][\u041e\u043e] [\u0418\u0438][\u041d\u043d][\u041e\u043e][\u0415\u0435] [\u041a\u043a][\u0410\u0430][\u041a\u043a]\\b(?![-\\w\u2013\xad])', u'\u043d\u0435 \u0447\u0442\u043e \u0438\u043d\u043e\u0435, \u043a\u0430\u043a', u'\u041e\u0431\u043e\u0440\u043e\u0442.', u'option(LOCALE,"multiword")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u0415\u0435] [\u041a\u043a][\u0422\u0442][\u041e\u043e] [\u0418\u0438][\u041d\u043d][\u041e\u043e][\u0419\u0439] [\u041a\u043a][\u0410\u0430][\u041a\u043a]\\b(?![-\\w\u2013\xad])', u'\u043d\u0435 \u043a\u0442\u043e \u0438\u043d\u043e\u0439, \u043a\u0430\u043a', u'\u041e\u0431\u043e\u0440\u043e\u0442.', u'option(LOCALE,"multiword")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u0415\u0435] [\u0427\u0447][\u0422\u0442][\u041e\u043e] [\u0418\u0438][\u041d\u043d][\u041e\u043e][\u0415\u0435] [\u041a\u043a][\u0410\u0430][\u041a\u043a]\\b(?![-\\w\u2013\xad])', u'\u043d\u0435 \u0447\u0442\u043e \u0438\u043d\u043e\u0435, \u043a\u0430\u043a', u'\u041e\u0431\u043e\u0440\u043e\u0442.', u'option(LOCALE,"multiword")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u0418\u0438][\u041a\u043a][\u0422\u0442][\u041e\u043e] [\u0418\u0438][\u041d\u043d][\u041e\u043e][\u0419\u0439], [\u041d\u043d][\u0415\u0435]\\b(?![-\\w\u2013\xad])', u'\u043d\u0438\u043a\u0442\u043e \u0438\u043d\u043e\u0439 \u043d\u0435', u'\u041e\u0431\u043e\u0440\u043e\u0442.', u'option(LOCALE,"multiword")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u0418\u0438][\u0427\u0447][\u0422\u0442][\u041e\u043e] [\u0418\u0438][\u041d\u043d][\u041e\u043e][\u0415\u0435], [\u041d\u043d][\u0415\u0435]\\b(?![-\\w\u2013\xad])', u'\u043d\u0438\u0447\u0442\u043e \u0438\u043d\u043e\u0435 \u043d\u0435', u'\u041e\u0431\u043e\u0440\u043e\u0442.', u'option(LOCALE,"multiword")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u0415\u0435][\u041a\u043a][\u0422\u0442][\u041e\u043e] [\u0418\u0438][\u041d\u043d][\u041e\u043e][\u0419\u0439], [\u041d\u043d][\u0415\u0435]\\b(?![-\\w\u2013\xad])', u'\u043d\u0438\u043a\u0442\u043e \u0438\u043d\u043e\u0439 \u043d\u0435', u'\u041e\u0431\u043e\u0440\u043e\u0442.', u'option(LOCALE,"multiword")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u0415\u0435][\u0427\u0447][\u0422\u0442][\u041e\u043e] [\u0418\u0438][\u041d\u043d][\u041e\u043e][\u0415\u0435], [\u041d\u043d][\u0415\u0435]\\b(?![-\\w\u2013\xad])', u'\u043d\u0438\u0447\u0442\u043e \u0438\u043d\u043e\u0435 \u043d\u0435', u'\u041e\u0431\u043e\u0440\u043e\u0442.', u'option(LOCALE,"multiword")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u0415\u0435][\u041a\u043a][\u0422\u0442][\u041e\u043e] [\u0418\u0438][\u041d\u043d][\u041e\u043e][\u0419\u0439] [\u041d\u043d][\u0415\u0435]\\b(?![-\\w\u2013\xad])', u'\u043d\u0438\u043a\u0442\u043e \u0438\u043d\u043e\u0439 \u043d\u0435', u'\u041e\u0431\u043e\u0440\u043e\u0442.', u'option(LOCALE,"multiword")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u0415\u0435][\u0427\u0447][\u0422\u0442][\u041e\u043e] [\u0418\u0438][\u041d\u043d][\u041e\u043e][\u0415\u0435] [\u041d\u043d][\u0415\u0435]\\b(?![-\\w\u2013\xad])', u'\u043d\u0438\u0447\u0442\u043e \u0438\u043d\u043e\u0435 \u043d\u0435', u'\u041e\u0431\u043e\u0440\u043e\u0442.', u'option(LOCALE,"multiword")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u0415\u0435] [\u041a\u043a][\u0422\u0442][\u041e\u043e] [\u0418\u0438][\u041d\u043d][\u041e\u043e][\u0419\u0439], [\u041d\u043d][\u0415\u0435]\\b(?![-\\w\u2013\xad])', u'\u043d\u0438\u043a\u0442\u043e \u0438\u043d\u043e\u0439 \u043d\u0435', u'\u041e\u0431\u043e\u0440\u043e\u0442.', u'option(LOCALE,"multiword")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u0415\u0435] [\u0427\u0447][\u0422\u0442][\u041e\u043e] [\u0418\u0438][\u041d\u043d][\u041e\u043e][\u0415\u0435], [\u041d\u043d][\u0415\u0435]\\b(?![-\\w\u2013\xad])', u'\u043d\u0438\u0447\u0442\u043e \u0438\u043d\u043e\u0435 \u043d\u0435', u'\u041e\u0431\u043e\u0440\u043e\u0442.', u'option(LOCALE,"multiword")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u0415\u0435] [\u041a\u043a][\u0422\u0442][\u041e\u043e] [\u0418\u0438][\u041d\u043d][\u041e\u043e][\u0419\u0439] [\u041d\u043d][\u0415\u0435]\\b(?![-\\w\u2013\xad])', u'\u043d\u0438\u043a\u0442\u043e \u0438\u043d\u043e\u0439 \u043d\u0435', u'\u041e\u0431\u043e\u0440\u043e\u0442.', u'option(LOCALE,"multiword")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u0415\u0435] [\u0427\u0447][\u0422\u0442][\u041e\u043e] [\u0418\u0438][\u041d\u043d][\u041e\u043e][\u0415\u0435] [\u041d\u043d][\u0415\u0435]\\b(?![-\\w\u2013\xad])', u'\u043d\u0438\u0447\u0442\u043e \u0438\u043d\u043e\u0435 \u043d\u0435', u'\u041e\u0431\u043e\u0440\u043e\u0442.', u'option(LOCALE,"multiword")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u0418\u0438][\u041a\u043a][\u0422\u0442][\u041e\u043e] [\u0418\u0438][\u041d\u043d][\u041e\u043e][\u0419\u0439], [\u041d\u043d][\u0415\u0435]\\b(?![-\\w\u2013\xad])', u'\u043d\u0438\u043a\u0442\u043e \u0438\u043d\u043e\u0439 \u043d\u0435', u'\u041e\u0431\u043e\u0440\u043e\u0442.', u'option(LOCALE,"multiword")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u0418\u0438][\u0427\u0447][\u0422\u0442][\u041e\u043e] [\u0418\u0438][\u041d\u043d][\u041e\u043e][\u0415\u0435], [\u041d\u043d][\u0415\u0435]\\b(?![-\\w\u2013\xad])', u'\u043d\u0438\u0447\u0442\u043e \u0438\u043d\u043e\u0435 \u043d\u0435', u'\u041e\u0431\u043e\u0440\u043e\u0442.', u'option(LOCALE,"multiword")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u0418\u0438] [\u041a\u043a][\u0422\u0442][\u041e\u043e] [\u0418\u0438][\u041d\u043d][\u041e\u043e][\u0419\u0439], [\u041d\u043d][\u0415\u0435]\\b(?![-\\w\u2013\xad])', u'\u043d\u0438\u043a\u0442\u043e \u0438\u043d\u043e\u0439 \u043d\u0435', u'\u041e\u0431\u043e\u0440\u043e\u0442.', u'option(LOCALE,"multiword")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u0418\u0438] [\u0427\u0447][\u0422\u0442][\u041e\u043e] [\u0418\u0438][\u041d\u043d][\u041e\u043e][\u0415\u0435], [\u041d\u043d][\u0415\u0435]\\b(?![-\\w\u2013\xad])', u'\u043d\u0438\u0447\u0442\u043e \u0438\u043d\u043e\u0435 \u043d\u0435', u'\u041e\u0431\u043e\u0440\u043e\u0442.', u'option(LOCALE,"multiword")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])([\u0412\u0432]) ([\u0422\u0442][\u0415\u0435][\u0427\u0447][\u0415\u0435][\u041d\u043d][\u0418\u0438][\u0415\u0435]) ([\u0420\u0440][\u0415\u0435][\u041a\u043a][\u0418\u0438]|[\u041f\u043f][\u041e\u043e][\u0422\u0442][\u041e\u043e][\u041a\u043a][\u0410\u0430]|[\u0412\u0432][\u041e\u043e][\u0414\u0434][\u042b\u044b]|[\u0420\u0440][\u0423\u0443][\u0427\u0447][\u042c\u044c][\u042f\u044f])(?![-\\w\u2013\xad])', u'\\1 \u0442\u0435\u0447\u0435\u043d\u0438\u0438 \\3', u'\u0413\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430', u'option(LOCALE,"multiword")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])([\u0412\u0432]) ([\u0422\u0442][\u0415\u0435][\u0427\u0447][\u0415\u0435][\u041d\u043d][\u0418\u0438][\u0418\u0438]) ([\u0427\u0447][\u0410\u0430][\u0421\u0441][\u0410\u0430]|[\u041c\u043c][\u0418\u0438][\u041d\u043d][\u0423\u0443][\u0422\u0442][\u042b\u044b]|[\u041f\u043f][\u0420\u0440][\u041e\u043e][\u041c\u043c][\u0415\u0435][\u0416\u0436][\u0423\u0443][\u0422\u0442][\u041a\u043a][\u0410\u0430]|[\u0421\u0441][\u0415\u0435][\u041a\u043a][\u0423\u0443][\u041d\u043d][\u0414\u0434][\u042b\u044b]|[\u0414\u0434][\u041d\u043d][\u042f\u044f]|[\u0412\u0432][\u0420\u0440][\u0415\u0435][\u041c\u043c][\u0415\u0435][\u041d\u043d][\u0418\u0438]|[\u041d\u043d][\u0415\u0435][\u0414\u0434][\u0415\u0435][\u041b\u043b][\u0418\u0438]|[\u041c\u043c][\u0415\u0435][\u0421\u0441][\u042f\u044f][\u0426\u0446][\u0410\u0430]|[\u0413\u0433][\u041e\u043e][\u0414\u0434][\u0410\u0430]|[\u0421\u0441][\u0422\u0442][\u041e\u043e][\u041b\u043b][\u0415\u0435][\u0422\u0442][\u0418\u0438][\u042f\u044f]|[\u0422\u0442][\u042b\u044b][\u0421\u0441][\u042f\u044f][\u0427\u0447][\u0415\u0435][\u041b\u043b][\u0415\u0435][\u0422\u0442][\u0418\u0438][\u042f\u044f])(?![-\\w\u2013\xad])', u'\\1 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \\3', u'\u0413\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430', u'option(LOCALE,"multiword")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])([\u0412\u0432]) ([\u041f\u043f][\u0420\u0440][\u041e\u043e][\u0414\u0434][\u041e\u043e][\u041b\u043b][\u0416\u0436][\u0415\u0435][\u041d\u043d][\u0418\u0438][\u0418\u0438]) ([\u0427\u0447][\u0410\u0430][\u0421\u0441][\u0410\u0430]|[\u041c\u043c][\u0418\u0438][\u041d\u043d][\u0423\u0443][\u0422\u0442][\u042b\u044b]|[\u041f\u043f][\u0420\u0440][\u041e\u043e][\u041c\u043c][\u0415\u0435][\u0416\u0436][\u0423\u0443][\u0422\u0442][\u041a\u043a][\u0410\u0430]|[\u0421\u0441][\u0415\u0435][\u041a\u043a][\u0423\u0443][\u041d\u043d][\u0414\u0434][\u042b\u044b]|[\u0414\u0434][\u041d\u043d][\u042f\u044f]|[\u0412\u0432][\u0420\u0440][\u0415\u0435][\u041c\u043c][\u0415\u0435][\u041d\u043d][\u0418\u0438]|[\u041d\u043d][\u0415\u0435][\u0414\u0434][\u0415\u0435][\u041b\u043b][\u0418\u0438]|[\u041c\u043c][\u0415\u0435][\u0421\u0441][\u042f\u044f][\u0426\u0446][\u0410\u0430]|[\u0413\u0433][\u041e\u043e][\u0414\u0434][\u0410\u0430]|[\u0421\u0441][\u0422\u0442][\u041e\u043e][\u041b\u043b][\u0415\u0435][\u0422\u0442][\u0418\u0438][\u042f\u044f]|[\u0422\u0442][\u042b\u044b][\u0421\u0441][\u042f\u044f][\u0427\u0447][\u0415\u0435][\u041b\u043b][\u0415\u0435][\u0422\u0442][\u0418\u0438][\u042f\u044f]|[\u0420\u0440][\u0410\u0430][\u0417\u0437][\u0413\u0433][\u041e\u043e][\u0412\u0432][\u041e\u043e][\u0420\u0440][\u0410\u0430]|[\u0411\u0431][\u0415\u0435][\u0421\u0441][\u0415\u0435][\u0414\u0434][\u042b\u044b])(?![-\\w\u2013\xad])', u'\\1 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \\3', u'\u0413\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430', u'option(LOCALE,"multiword")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041a\u043a][\u0410\u0430][\u041a\u043a][\u0411\u0431][\u0423\u0443][\u0414\u0434][\u0422\u0442][\u041e\u043e](?![-\\w\u2013\xad])', u'\u043a\u0430\u043a \u0431\u0443\u0434\u0442\u043e', u'\u0421\u043e\u0441\u0442\u0430\u0432\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u0438\u0446\u0430', u'option(LOCALE,"together")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041f\u043f][\u041e\u043e] [\u041c\u043c][\u0418\u0438][\u041c\u043c][\u041e\u043e]\\b(?![-\\w\u2013\xad])', u'\u043f\u043e\u043c\u0438\u043c\u043e', u'\u041f\u0438\u0448\u0435\u0442\u0441\u044f \u0441\u043b\u0438\u0442\u043d\u043e', u'option(LOCALE,"together")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u0410\u0430] [\u041a\u043a][\u0410\u0430][\u041d\u043d][\u0423\u0443][\u041d\u043d][\u0415\u0435]\\b(?![-\\w\u2013\xad])', u'\u043d\u0430\u043a\u0430\u043d\u0443\u043d\u0435', u'\u0421\u043b\u0438\u0442\u043d\u043e', u'option(LOCALE,"together")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u0410\u0430] [\u041f\u043f][\u041e\u043e][\u0414\u0434][\u041e\u043e][\u0411\u0431][\u0418\u0438][\u0415\u0435]\\b(?![-\\w\u2013\xad])', u'\u043d\u0430\u043f\u043e\u0434\u043e\u0431\u0438\u0435', u'\u0421\u043b\u0438\u0442\u043d\u043e', u'option(LOCALE,"together")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u0410\u0430] [\u041f\u043f][\u0420\u0440][\u041e\u043e][\u0422\u0442][\u0418\u0438][\u0412\u0432]\\b(?![-\\w\u2013\xad])', u'\u043d\u0430\u043f\u0440\u043e\u0442\u0438\u0432', u'\u0421\u043b\u0438\u0442\u043d\u043e', u'option(LOCALE,"together")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0412\u0432] [\u041d\u043d][\u0418\u0438][\u0417\u0437][\u0423\u0443]\\b(?![-\\w\u2013\xad])', u'\u0432\u043d\u0438\u0437\u0443', u'\u0421\u043b\u0438\u0442\u043d\u043e', u'option(LOCALE,"together")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0421\u0441] [\u041d\u043d][\u0418\u0438][\u0417\u0437][\u0423\u0443]\\b(?![-\\w\u2013\xad])', u'\u0441\u043d\u0438\u0437\u0443', u'\u0421\u043b\u0438\u0442\u043d\u043e', u'option(LOCALE,"together")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u041d\u043d][\u0410\u0430] [\u0412\u0432][\u0415\u0435][\u0420\u0440][\u0425\u0445][\u0423\u0443]\\b(?![-\\w\u2013\xad])', u'\u043d\u0430\u0432\u0435\u0440\u0445\u0443', u'\u0421\u043b\u0438\u0442\u043d\u043e', u'option(LOCALE,"together")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0412\u0432] [\u0412\u0432][\u0415\u0435][\u0420\u0440][\u0425\u0445][\u0423\u0443]\\b(?![-\\w\u2013\xad])', u'\u0432\u0432\u0435\u0440\u0445\u0443', u'\u0421\u043b\u0438\u0442\u043d\u043e', u'option(LOCALE,"together")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0421\u0441] [\u0412\u0432][\u0415\u0435][\u0420\u0440][\u0425\u0445][\u0423\u0443]\\b(?![-\\w\u2013\xad])', u'\u0441\u0432\u0435\u0440\u0445\u0443', u'\u0421\u043b\u0438\u0442\u043d\u043e', u'option(LOCALE,"together")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0421\u0441] [\u0412\u0432][\u0415\u0435][\u0420\u0440][\u0425\u0445]\\b(?![-\\w\u2013\xad])', u'\u0441\u0432\u0435\u0440\u0445', u'\u0421\u043b\u0438\u0442\u043d\u043e', u'option(LOCALE,"together")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0421\u0441] [\u0412\u0432][\u042b\u044b][\u0428\u0448][\u0415\u0435]\\b(?![-\\w\u2013\xad])', u'\u0441\u0432\u044b\u0448\u0435', u'\u0421\u043b\u0438\u0442\u043d\u043e', u'option(LOCALE,"together")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0421\u0441][\u041e\u043e] [\u0413\u0433][\u041b\u043b][\u0410\u0430][\u0421\u0441][\u041d\u043d][\u041e\u043e]\\b(?![-\\w\u2013\xad])', u'\u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e', u'\u0421\u043b\u0438\u0442\u043d\u043e', u'option(LOCALE,"together")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0412\u0432] [\u0413\u0433][\u041b\u043b][\u0423\u0443][\u0411\u0431][\u042c\u044c]\\b(?![-\\w\u2013\xad])', u'\u0432\u0433\u043b\u0443\u0431\u044c', u'\u0421\u043b\u0438\u0442\u043d\u043e', u'option(LOCALE,"together")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0412\u0432] [\u0414\u0434][\u041e\u043e][\u041b\u043b][\u042c\u044c]\\b(?![-\\w\u2013\xad])', u'\u0432\u0434\u043e\u043b\u044c', u'\u0421\u043b\u0438\u0442\u043d\u043e', u'option(LOCALE,"together")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b[\u0412\u0432] [\u0417\u0437][\u0410\u0430][\u041c\u043c][\u0415\u0435][\u041d\u043d]\\b(?![-\\w\u2013\xad])', u'\u0432\u0437\u0430\u043c\u0435\u043d', u'\u0421\u043b\u0438\u0442\u043d\u043e', u'option(LOCALE,"together")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b(?P<d2_1>\\d\\d)(?P<d_1>\\d\\d\\d)\\b(?![-\\w\u2013\xad])', u'\\g<d2_1>\xa0\\g<d_1>', u'\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0440\u0430\u0437\u0440\u044f\u0434\u043e\u0432 (ISO)?', u'option(LOCALE,"numsep")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b(?P<D_1>\\d|\\d\\d|\\d\\d\\d)(?P<d_1>\\d\\d\\d)(?P<d_2>\\d\\d\\d)\\b(?![-\\w\u2013\xad])', u'\\g<D_1>\xa0\\g<d_1>\xa0\\g<d_2>', u'\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0440\u0430\u0437\u0440\u044f\u0434\u043e\u0432 (ISO)?', u'option(LOCALE,"numsep")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])\\b(?P<D_1>\\d|\\d\\d|\\d\\d\\d)(?P<d_1>\\d\\d\\d)(?P<d_2>\\d\\d\\d)(?P<d_3>\\d\\d\\d)\\b(?![-\\w\u2013\xad])', u'\\g<D_1>\xa0\\g<d_1>\xa0\\g<d_2>\xa0\\g<d_3>', u'\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0440\u0430\u0437\u0440\u044f\u0434\u043e\u0432 (ISO)?', u'option(LOCALE,"numsep")', 0], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<W_1>[-\\w]{3,}) \\1(?![-\\w\u2013\xad])', u'\\g<W_1>', u'\u041f\u043e\u0432\u0442\u043e\u0440 \u0441\u043b\u043e\u0432\u0430?', u'option(LOCALE,"dup")', 0]]