正则表达式 - 模式匹配后缀但忽略具有这些后缀的特定单词

时间:2018-01-31 01:32:34

标签: javascript python regex string suffix

我在Regex中创建了一个模式,以(至少尝试)根据波兰语字符(Latin Extended-A Unicode代码 - 0100-017F)和波兰名词中的常见后缀(如{{3 }})。但是,对于这种模式,我知道某些单词是波兰语,但我希望不要匹配,主要是名称,同时仍然匹配同一字符串中该模式中的任何其他单词。例如,我的模式中的一个后缀是“ski”,但名称“sapkowski”不应该匹配,因此如果有一个字符串,例如“sapkowski is not podolski”,它应该只匹配“podolski”。或者“wiedźmin”这个词,里面有波兰语“ź”。其中包括其他几个。

从我的研究中,我发现了一个可能的解决方案,它将遵循否定先行\b(?!ignoreword1|ignoreword2)\b(mypatternhere)+的想法(this Wiktionary page就是一个例子)。但它根本不符合我的模式。让我用一个具体的例子来澄清这一点(后缀列表是真的长):

(?!\b(sapkowski|wiedźmin|tomek|bagiński)\b)(([\u0100-\u017F])|(acz|acze|acza|aczy|aczowi|aczom|aczem|aczami|aczu|aczach|adam|adamy|adasz|adacie|ada|adali|adaliby|adajmy|adaj|adajcie|adany|adana|adane|adani|adano|adanie|ak|akowi|akom|akiem|akami|aku|akach|aki|alnia|alnie|alni|alniom|alniami|alniach|alnio|anin|anie|anina|aninowi|anom|aninem|anami|aninie|anach|anka|anki|anek|ankom|ankami|ankach|anko|arka|arki|arkowu|arkow|arkoma|arkam|arku|arkami|arkach|arek|arkom|arko|arnia|arnie|arni|arniom|arniami|arniach|arnio|arz|arze|arza|arzy|arzowi|arzom|arzem|arzami|arzu|arzach|aci|atego|atemu|atej|atych|atym|atymi|atych|awy|awe|awa|awi|awego|awemu|awej|awych|awym|awymi|cami|cach|cja|cje|cji|cyj|cjom|cje|cjami|cjach|cjo|cka|cki|ckie|ccy|ckiego|ckiemu|ckiej|ckich|ckim|ckimi|cku|cz|czyk|czycy|czyki|czyka|czykowi|czykom|czyka|czykiem|czykami|czyku|czykach|czyni|czynie|czyniom|czyniami|czyniach|czyzna|czyzny|czyzn|czyznom|czyznami|czyznach|czyzno|dziej|dzieje|dzieja|dziei|dziejowi|dziejom|dziejem|dziejami|dzieju|dziejach|ec|ek|ki|ka|kowi|kom|kiem|kami|ku|kach|elnia|elnie|elni|elniom|elniami|elniach|elnio|ica|icom|icami|icach|iczny|iczne|iczna|iczni|icznego|icznej|icznych|icznemu|icznym|icznymi|iec|ika|ikowi|ikom|ikiem|ikami|iku|ikach|iki|inie|inom|inami|inach|isko|iska|isek|isku|iskom|iskiem|iskami|iskach|izm|izmy|izmu|izmowi|izmom|izmem|izmami|izmie|izmach|jad|jady|jada|jadowi|jadom|jadem|jadami|jadzie|jadach|kolwiek|logie|logii|logiom|logiami|logiach|mierz|mierze|mierza|mierzy|mierzowi|mierzom|mierzem|mierzami|mierzu|mierzach|nica|nicy|nicom|nicami|nicach|nico|nie|nia|niu|niom|niem|niami|niach|nika|nikowi|nikom|nikiem|nikami|niku|nikach|niki|ninowi|ninem|ninie|nach|nego|nemu|nej|nych|nymi|odporny|odporne|odporna|odporni|odpornego|odpornemu|odpornej|odpornych|odpornym|odpornymi|olowi|olami|olach|ocie|otami|ocie|otach|owiec|owcy|owca|owcowi|owcom|owcem|owcami|owcu|owcach|owcze|owce|owy|owe|owa|owi|owego|owemu|owej|owych|owym|owymi|ów|owowi|owie|ówka|ówki|ówek|ówce|ówkom|ówkami|ówkach|ówko|pedie|pedii|pedyj|pediom|pediami|pediach|pedio|podobny|podobne|podobna|podobni|podobnego|podobnemu|podobnej|podobnych|podobnym|podobnymi|ska|skie|scy|skiego|skiej|skiemu|skich|skich|skimi|sku|stwo|stwa|stw|stwu|stwom|stwem|stwami|stwie|stwach|szczyzna|szczyzny|szczyzn|szczyznom|szczyznami|szczyznach|szczyzno|szy|sze|sza|szego|szemu|szej|szych|szym|szymi|unek|wód|wody|wodu|wodów|wodowi|wodom|wodem|wodami|wodzie|wodach|yca|yce|ycy|ycom|ycami|ycach|yco|yczny|yczne|yczna|yczni|ycznego|ycznemu|ycznej|ycznych|ycznym|ycznymi|ysko|yska|ysek|ysku|yskom|yskiem|yskami|ysku|yskach|ujemy|ujesz|ujecie|uje|ywali|ywaliby|ujmy|uj|ujcie|ywany|ywana|ywane|ywani|ywano|ywanie|zka|zki|zkie|zcy|zkiego|zkiemu|zkiej|zkich|zkim|zkich|zkimi|zku|znawstwo|znawstwa|znawstew|znawstwu|znawstwom|znawstwem|znawstwami|znawstwie|znawstwach)\b)+

注意:右括号前的最后一个\b是确定单词末尾所有后缀捕获组的边界,作为后缀。

here

正如你所看到的,似乎尽管前瞻性为负,但我想要排除的词仍然在各自的后缀模式中匹配。

0 个答案:

没有答案