Java 基于这个或那个的正则表达式
我正在尝试分析以下内容:Java 基于这个或那个的正则表达式,java,regex,token,delimiter,Java,Regex,Token,Delimiter,我正在尝试分析以下内容: "#SenderCompID=something\n" + "TargetCompID=something1" 放入一个数组中: {"#SenderCompID=something", "TargetCompId", "something1"} 使用: String regex = "(?m)" + "(" + "(#.*) |" + //single line of (?m)((#.*)|([^=]+=(.+))
"#SenderCompID=something\n" +
"TargetCompID=something1"
放入一个数组中:
{"#SenderCompID=something", "TargetCompId", "something1"}
使用:
String regex = "(?m)" + "(" +
"(#.*) |" + //single line of (?m)((#.*)|([^=]+=(.+))
"([^=]+)=(.+) + ")";
String toMatch = "#SenderCompID=something\n" +
"TargetCompID=something1";
输出:
#SenderCompID=something
null
#SenderCompID
something
//why is there any empty line here?
TargetCompID=something1
null
//why is there an empty line here?
TargetCompID
something1
我明白我做错了什么。第一组返回整行,第二组返回(#.*)如果行以#开头,否则为null,第三组返回([^=]+=(.+)。我正试图做的是|。我想根据第二组的条件对其进行分析
(#.*)
([^=]+)=(.+).
或第三组
(#.*)
([^=]+)=(.+).
怎么做
编辑:编写错误的示例代码您可以使用此正则表达式获取所有3个组:
(?m)^(#.*)|^([^=]+)=(.*)
正则表达式分解:
:启用(?m)
多行模式
:在组1中匹配以^(#.*)
开头的整行#
:或|
:匹配到^([^=]+)=
,并在第2组中捕获,后跟=
=
:匹配第3组中的其余行(.*)
(?:…)
称为非捕获组。感谢您的帮助。