【发布时间】:2016-06-05 12:51:22
【问题描述】:
我有这个代码:
String result = text;
String regex = "((\\(|\\[)(.+)(\\)|\\])){1}?";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(result);
System.out.println("start");
System.out.println(result);
while (matcher.find()) {
System.out.print("Start index: " + matcher.start());
System.out.print(" End index: " + matcher.end() + " ");
System.out.println(matcher.group());
}
System.out.println("finish");
我有一个我想匹配的字符串:
Some text sentence or sentences [something 234] (some things)
以及执行时得到的输出:
start
some text sentence or sentences [something 234] (some things)
Start index: 32 End index: 61 [something 234] (some things)
finish
现在我实际上希望它在括号中分别找到找到的案例,所以要找到: [东西 234] 在一场比赛中 (一些东西)作为第二场比赛
任何人都可以帮助我相应地构建正则表达式吗?我不确定如何为整个正则表达式放置不情愿的量词,所以我将整个括号内的元素括在另一个括号中。但我不明白为什么这个不情愿的量词在这里表现得很贪婪,我需要做些什么来改变它?
【问题讨论】:
-
你想要
[]和()里面的内容吗? -
.+并不贪心。.+?会。 -
另外
{1}?似乎是多余的。 -
另外,可以避免交替
-
@rock321987 是的,我需要每个括号内的内容
标签: java regex reluctant-quantifiers