我想剪切这段文字
UNIT=1111,SPACE=(TRK,0),DISP=(MOD,DELETE,DELETE),DSN=UUU.AAAAA.BBBBB
结果:
UNIT=1111
SPACE=(TRK,0)
DISP=(MOD,DELETE,DELETE)
DSN=UUU.AAAAA.BBBBB
我尝试了自己,但我是正常表达的诺布,我使用(\S+)=(\S+)
来剪切它,但它不正确。
有人可以帮助我吗?
这是我的java代码
import java.util.regex.Matcher;
import java.util.regex.Pattern;
final String regex = "(\\S+)=(\\S+)";
final String string = "UNIT=1111,SPACE=(TRK,0),DISP=(MOD,DELETE,DELETE),DSN=UUU.AAAAA.BBBBB"
final Pattern pattern = Pattern.compile(regex);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group " + i + ": " + matcher.group(i));
}
}
答案 0 :(得分:1)
您可以使用此负前瞻性正则表达式进行拆分:
String[] arr = str.split(",(?![^()]*\\))");
这假设(
和)
都是平衡的且没有转义。
RegEx分手:
,
:匹配文字逗号(?![^()]*\\))
:断言前言断言逗号不在(...)
答案 1 :(得分:0)
工作代码在这里https://regex101.com/r/G355nS/2
^(UNIT=\d{4}),(SPACE=\S+\d+\)),(DISP=\S+\)),(DSN=[\S+.]*)$