我想提取括在花括号中的所有单词,所以我有一个像这样的表达式
foo {bar} moo {mar}
Run Code Online (Sandbox Code Playgroud)
要匹配的字符串可能包含任意数量的这些单词,但我开始认为我正在以错误的方式处理此问题.
我的尝试
而且我试图将大括号分成几组,这样我就可以使用每一个匹配.所以,我做了一个正则表达式:
String rx = ".*\\{({GROUP}\\w+)\\}.*";
Run Code Online (Sandbox Code Playgroud)
注意:我正在使用JRegex语法,所以我需要逃避一些问题.
结果
我得到的结果是一个(尽管是正确的)匹配bar,而我期待两个匹配bar和mar.我误解了什么,我该如何纠正呢?我可能需要为该.部分使用其他一些量词,但我希望你也可以帮助我.
提前谢谢了!
您的正则表达式.*\{({GROUP}\w+)\}.*不起作用,因为它一次匹配所有输入字符串:
.* 火柴 foo \{({GROUP}\w+)\} 火柴 {bar} .* 火柴 moo {mar}你应该使用这样的东西:
List<String> matchList = new ArrayList<String>();
Pattern regex = Pattern.compile("\\{([^}]*)\\}");
Matcher regexMatcher = regex.matcher(subjectString);
while (regexMatcher.find())
{
matchList.add(regexMatcher.group());
}
Run Code Online (Sandbox Code Playgroud)
此正则表达式不处理内部花括号
| 归档时间: |
|
| 查看次数: |
6902 次 |
| 最近记录: |