gpt4 book ai didi

计数出现的正则表达式匹配算法

转载 作者:行者123 更新时间:2023-12-02 03:34:49 29 4
gpt4 key购买 nike

我花了我们的钱来解决我的小正则表达式问题。

假设我有一个包含德语变音符号的字符串。例如“Brötchenkörbe”。

如果 'ö' 的出现次数 > 1,我需要最好的正则表达式条件来匹配除最后一个之外的所有 'ö'

(else) 如果字符串中只有一个 'ö',我也想匹配那个字符。

这样我会得到以下结果:

Brötchenkörbe

Möhrenlösungslöcher

Lö施瓦根

我找到了一个匹配每个 'ö' 的表达式,除了最后一个。但如果 'ö' 只出现一次,则不匹配:

/(ö(?=[^.]*[ö]))/

有人知道吗?

我需要该表达式在我的 solr 服务器上的过滤器上工作。

背景:我使用词干过滤器来提取德语单词的词干。但使用的过滤器“SnowballPorterFilter”确实将每个元音变音 (öäüÖÄÜ) 更改为 (oauOAU)。

只有最后一个变音符号需要从该过滤器中更改,因此我想使用正则表达式过滤器(“PatternReplaceFilterFactory”)来保护所有其他变音符号免受该更改的影响,并在运行该词干过滤器后撤销该保护。

例如:Möhrenlösungslöcher 获取“M#o#hrenl#o#sungslöcher”,过滤器执行“M#o#hrenl#o#sungsloch”,然后反向保护到“Möhrenlösungsloch”

最佳答案

Qeole 得到了解决方案:

分三步:

  1. 将变音符号固定在 # 符号之间,使用以下正则表达式:

    /(^([^äöü]*))(ä|ö|ü)|(ä|ö|ü)(?![^äöü]*$)/gm

    (替换为$1#$3$4#)
    所有要修复的变音符号现在都在 # 符号之间。所以让我们继续前进……

  2. 将所有#ä#改为#a#

  3. 重复 #ö##ü#

关于计数出现的正则表达式匹配算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24257989/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com