我想要匹配任何一个或更多的单词或短语(在特定的语言名称之后),用逗号分隔,以分号结尾。
例如,我想将这个字符串匹配为俄语:
俄文:радостьсть,весе-веселье,весе‘веселье,веселье;
在替换中创建wiki链接,如下所示:
俄文:[радостьсть],[весе-веселье],[весе‘веселье],[веселье];
以下是示例文本:
保加利亚语:веселие,радост;汉语普通话:歡笑,欢笑,愉快,高興,高兴;荷兰语: vrolijkheid;芬兰语:劳工组织,hilpeys;法语: gaieté;格鲁吉亚语:მხიარულება,სიმხიარულე,სიხარული;德语:Fr hlichkeit,Belustigung,弗洛德;希腊语:ευθυμία,κέφι;古希腊语:εὐφροσύνη;意大利语: gran gioia,allegria;日语:笑い,遊び,喜び,歓楽;马来语:ആഹ്ലാദം;Plautdietsch: Freid;葡萄牙语: alegria,júbilo;俄语:радостьсть,весе-веселье,весе‘веселье,веселье;苏格兰盖尔语: sogan;西班牙语: felicidad,alegría,júbilo;瑞典语: munterhet,gl dje
发布于 2022-09-21 21:28:50
在EmEditor宏中只需几行就可以做到这一点。第一行识别语言并选择那一行,第二行做替换。例如:
v3
document.selection.Find("(^|; )((Russian: )|(Ancient Greek: )|(Greek: )|(French: ))\\K[^;]*(?=$|;)",eeFindNext | eeFindReplaceCase | eeFindReplaceRegExp | eeFindSelectAll,0);
document.selection.Replace("(\\b[^,;]+)(?=$|,)","[\\1]",eeFindReplaceCase | eeFindReplaceSelOnly | eeReplaceAll | eeFindReplaceRegExp,eeExFindBOL | eeExFindEOL);发布于 2022-09-06 21:38:46
(?<Lang>Russian): (?<pre>(\[\[.*\]\],)*) (?<words>[^\[,;]+)(?<post>[^;]*?;)代之以
$Lang: $pre [[$words]]$post再跑一次。
它是怎么工作的?我们锚定在“俄语”和分号内的文本。然后,通过将它们与重复捕获组匹配,跳过已经格式化的值。($pre中的anon组。)一旦我们找到未格式化的值(不被[[]],包围的字符串),我们就会匹配直到逗号/分号。然后我们把所有的东西都匹配起来,直到分号。
在使用Regex101时看到它的作用
https://stackoverflow.com/questions/73627922
复制相似问题