我必须使用以下规则处理字符串:
- 它可能会或可能不会以一系列
'
. - 它可能会也可能不会以一系列
'
. - 应提取上述内容之间的任何内容。但是,包含的字符串也可能包含也可能不包含一系列
'
.
例如,我可以获得以下字符串作为输入:
''''aa''''
''''aa
aa''''
''''aa''bb''cc''''
对于上述示例,我想(分别)从中提取以下内容:
aa
aa
aa
aa''bb''cc
我在Java中尝试了以下代码:
Pattern p = Pattern.compile("[^']+(.+'*.+)[^']*");
Matcher m = p.matcher("''''aa''bb''cc''''");
while (m.find()) {
int count = m.groupCount();
System.out.println("count = " + count);
for (int i = 0; i <= count; i++) {
System.out.println("-> " + m.group(i));
}
但我得到以下输出:
count = 1
-> aa''bb''cc''''
-> ''bb''cc''''
任何指针?
编辑:没关系,我*
在我的正则表达式末尾使用 a ,而不是+
. 做这个改变给了我想要的输出。但我仍然欢迎正则表达式的任何改进。