gpt4 book ai didi

regex - 使用正则表达式匹配多个逗号分隔的单词

转载 作者:行者123 更新时间:2023-12-04 12:51:21 24 4
gpt4 key购买 nike

我试图找到合适的正则表达式模式,它允许我选择以逗号开头或结尾的整个单词,但不包括数字。我想出了([\w]+,) 它匹配第一个单词,后跟一个逗号,例如:

红色,1,黄色,4

红色,会匹配,但我试图找到一个匹配如下的解决方案:

红色, 1 ,黄色, 4

我找不到任何可以像这样打破字符串的东西,但希望您能提供帮助!

最佳答案

这个正则表达式

,?[a-zA-Z][a-zA-Z0-9]*,?

匹配可选用逗号括起来的“单词”。逗号和“单词”之间不允许有空格,并且单词必须以字母数字开头。

here用于演示。

要确定至少匹配一个逗号,请使用交替语法:
(,[a-zA-Z][a-zA-Z0-9]*|[a-zA-Z][a-zA-Z0-9]*,)

不幸的是,我知道没有正则表达式引擎支持级联匹配。但是,由于您通常在编程环境的上下文中使用 regexen 进行操作,因此您可以重复匹配一个 regex 并采用匹配的子字符串进行进一步匹配。这可以通过使用特殊的分隔符字符(必须保证不会出现在测试字符串中)链接或迭代函数调用来实现。

示例(Javascript):
"red, 1 ,yellow, 4, red1, 1yellow yellow"
.replace(/(,?[a-zA-Z][a-zA-Z0-9]*,?)/g, "<$1>")
.replace(/<[^,>]+>/g, "")
.replace(/>[^>]+(<|$)/g, "> $1")
.replace(/^[^<]+</g, "<")

在此示例中,首先测试(简单)正则表达式。该调用返回由尖括号分隔的一系列初步匹配。不包含所需子字符串(在本例中为 ,)的匹配项将被消除,所有中间 Material 也是如此。

这种技术可能会生成比复杂的正则表达式更易于维护的代码。

但是,根据经验,如果您的正则表达式太复杂而无法轻松维护,一个很好的猜测是它首先不是正确的工具(许多引擎提供 x 匹配修饰符,允许您穿插空白 - 即换行符和空格 - 以及随意评论)。

关于regex - 使用正则表达式匹配多个逗号分隔的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37746958/

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