正则表达式基于THIS或THAT

时间:2017-07-24 21:09:59

标签: java regex token delimiter

我正在尝试解析以下内容:

"#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,第三组返回([^ =] + =(。+)。|是什么我正在努力。我想根据 EITHER 解析第二组的条件

(#.*)

第3组

([^=]+)=(.+).

如何?

编辑:错误编写了示例代码

1 个答案:

答案 0 :(得分:3)

您可以使用此正则表达式获取所有3个组:

(?m)^(#.*)|^([^=]+)=(.*)

RegEx Demo

RegEx分手:

  • (?m):启用MULTILINE模式
  • ^(#.*):匹配以#1
  • 组中的#开头的整行
  • |:或
  • ^([^=]+)=:匹配到=并在第2组中捕获,然后是=
  • (.*):匹配第3组
  • 中的其余部分