请帮助我,我是一个正则表达式的初学者,我没有找到一个解决方案。
我有一个这样的字符串:
(name:"apple",color:"red"),(name:"orange",color:"orange"),(name:"berry",color:"red",color:"black")
我想找到所有匹配(名称)与“颜色”的条件。例如:
- 颜色为红色,则结果为:苹果和浆果
- 颜色为橙子,结果为:橙子
- 颜色为黑色,则结果为:浆果
这是我尝试的方式:这列出了所有的名字(苹果,橙子,浆果):
name:"(.*?)"
这找到了两个“条件”的匹配:
color:"red"
但是如果我试着像这样合并..
name:"(.*?)color:"red"
。。结果是‘苹果’和‘橙子’,颜色:“橘子”),(名称:“浆果”,‘
谢谢
3条答案
按热度按时间hsvhsicv1#
如果可能的话,我建议使用对象而不是字符串作为输入。
但是如果你对输入没有任何控制,一种可能性是首先将其转换为数组的数组。然后,您可以使用标准的数组操作方法(如
.filter()
和.map()
)来遍历它。以下是
getFruits()
的替代版本,使用.reduce()
:db2dz4w82#
试试这个:
参见https://regex101.com/r/hE5zQ8/4
它甚至对这样的字符串也有效:
r7xajy2e3#
下面是一个正则表达式,它查找包含颜色的所有组,但名称必须在颜色之前
对于字符串:
您将获得两个匹配项,并且名称位于每个匹配项的组#1中