Java中的贪婪与非贪婪模式匹配

时间:2012-05-14 22:40:20

标签: java regex greedy

使用JAVA捕获给定字符串中的以下组的正则表达式是什么:

hey,soul,345

具有约束,即第一个单词也可以包含逗号。我有以下正则表达式:

(.*),(.*),(.*)

但我基本上只想匹配最后3个逗号。

2 个答案:

答案 0 :(得分:3)

我认为你真的不需要正则表达式...如果你有一个单独的字符串,其值用逗号分隔,你只需要最后3个逗号分隔值(意味着有“三个”值,但首先可能有在它中的逗号),您可以在逗号处爆炸/拆分字符串并具有值的数组。然后只需弹出#2和#3值的最后2个数组元素,然后内插/加入剩下的任何数组元素,#1。

答案 1 :(得分:1)

您可以在正则表达式的末尾添加$以匹配字符串的最后部分,然后在每个捕获组中添加.,而不是匹配[^,](任何字符)您可以匹配任何非逗号字符:(.*),([^,]*),([^,]*)$ 。如果你想通过正则表达式做到这一点,那么你应该得到最后三个以逗号分隔的组。所以你的正则表达式将是:

{{1}}