1

我在正则表达式中创建了一个模式,以(至少尝试)根据波兰语字符(拉丁语扩展-A Unicode 代码 - 0100-017F)和波兰语名词中的常见后缀(如本维基词典页面)匹配波兰语中可能的单词。但是,对于这种模式,我知道某些单词是波兰语,但我不想匹配,主要是名称,同时仍然匹配同一字符串中该模式中的任何其他单词。例如,我的模式中的一个后缀是“ski”,但名称“sapkowski”不应该匹配,所以如果有“sapkowski is not podolski”这样的字符串,它应该只匹配“podolski”。或单词“wiedźmin”,其中包含波兰语字符“ź”。在其他几个中。

从我的研究中,我找到了一个可能的解决方案,它遵循负前瞻的想法\b(?!ignoreword1|ignoreword2)\b(mypatternhere)+这里是一个例子)。但它根本不适合我的模式。让我用一个具体的例子来澄清这一点(后缀列表真的很长):

(?!\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右括号前的最后一个是确定词尾所有后缀捕获组的边界,就像后缀一样。

https://regex101.com/r/U3354Y/3

如您所见,似乎尽管有否定的前瞻,但我想被排除的单词仍然在它们各自的后缀模式中匹配。

4

0 回答 0