【发布时间】:2018-05-28 17:59:17
【问题描述】:
我正在尝试匹配一行文本中以特定字符串开头的元素数组。例如,匹配以下文本中的所有宠物:
水果:苹果、香蕉;宠物:猫、狗、鸟;颜色:绿色、蓝色
/(?:pets:)(\w+[,|;])+/g**
使用给定的正则表达式我只能匹配最后一个单词“鸟”
谁能帮我理解使用非捕获组和捕获组的正确方法?
谢谢!
【问题讨论】:
-
/pets:([^;]*)/怎么样? -
你的正则表达式是什么语言的?
-
您不能在单独的组中捕获每只宠物,因为您只有 1 个组。您可以做的就是将它们全部捕获在同一个组中,例如
pets:((?:\w+[,;])+)。 -
什么是正则表达式?您应该通过访问第 1 组捕获集合在 .NET 正则表达式中使用
pets:(?:(\w+)(?:[,;]|$))+获得所需的内容,否则,在 PCRE、Java、Onigmo 中,您可以依赖\G、(?:\G(?!^)(?:[,;]|$)|pets:)(\w+)(并获得第 1 组值)。 -
我目前正在使用 PCRE,目标是让每只宠物都参加比赛
标签: regex regex-group