首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >匹配1或多个以逗号分隔的单词

匹配1或多个以逗号分隔的单词
EN

Stack Overflow用户
提问于 2022-09-06 21:27:54
回答 2查看 138关注 0票数 -2

我想要匹配任何一个或更多的单词或短语(在特定的语言名称之后),用逗号分隔,以分号结尾。

例如,我想将这个字符串匹配为俄语:

俄文:радостьсть,весе-веселье,весе‘веселье,веселье;

在替换中创建wiki链接,如下所示:

俄文:[радостьсть],[весе-веселье],[весе‘веселье],[веселье];

以下是示例文本:

保加利亚语:веселие,радост;汉语普通话:歡笑,欢笑,愉快,高興,高兴;荷兰语: vrolijkheid;芬兰语:劳工组织,hilpeys;法语: gaieté;格鲁吉亚语:მხიარულება,სიმხიარულე,სიხარული;德语:Fr hlichkeit,Belustigung,弗洛德;希腊语:ευθυμία,κέφι;古希腊语:εὐφροσύνη;意大利语: gran gioia,allegria;日语:笑い,遊び,喜び,歓楽;马来语:ആഹ്ലാദം;Plautdietsch: Freid;葡萄牙语: alegria,júbilo;俄语:радостьсть,весе-веселье,весе‘веселье,веселье;苏格兰盖尔语: sogan;西班牙语: felicidad,alegría,júbilo;瑞典语: munterhet,gl dje

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-21 21:28:50

在EmEditor宏中只需几行就可以做到这一点。第一行识别语言并选择那一行,第二行做替换。例如:

v3

代码语言:javascript
复制
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);
票数 -1
EN

Stack Overflow用户

发布于 2022-09-06 21:38:46

代码语言:javascript
复制
(?<Lang>Russian): (?<pre>(\[\[.*\]\],)*) (?<words>[^\[,;]+)(?<post>[^;]*?;)

代之以

代码语言:javascript
复制
$Lang: $pre [[$words]]$post

再跑一次。

它是怎么工作的?我们锚定在“俄语”和分号内的文本。然后,通过将它们与重复捕获组匹配,跳过已经格式化的值。($pre中的anon组。)一旦我们找到未格式化的值(不被[[]],包围的字符串),我们就会匹配直到逗号/分号。然后我们把所有的东西都匹配起来,直到分号。

在使用Regex101时看到它的作用

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73627922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档