匹配对的正则表达式

时间:2013-08-29 09:41:26

标签: java regex

我正在尝试在java中编写正则表达式,以便从特定文本中匹配对(param:value):

  

“CUSTOMER

Customer Name               :  JOHN DOE

City                  :  Chicago

Customer Id               :  123AWE32D2

System Id             :  004349

Register Date (yymmddww)      :  12020906 
     

作为输出我希望有成对:

  

客户名称,JOHN DOE   城市,芝加哥   客户ID,123AWE32D2   系统ID,004349   注册日期(yymmddww),12020906

可能有多种参数。我需要有用于提取组的通用模式(param name):( value)。这是我的模式,我写的是匹配特定的参数:

\s*Customer Name\s*:\s*([^\n]*\S)

3 个答案:

答案 0 :(得分:2)

1)在多线模式下使用此(.+):(.+)

含义:

. - 任何事情

: - 然后我们需要冒号

. - 再一次

+ - 至少一个字符

你有两组,在冒号之前和之后。

2)或简单地使用split()方法 - split(":")

在两者之后,使用trim()删除空格或在正则表达式中删除它们。

答案 1 :(得分:0)

使用在换行符之前/之前使^ / $匹配的“多行”开关(?m)

(?m)^\\s*(.+?)\\s*:\\s*(.+?)\\s*$

每个匹配将捕获组1中的参数名称和组2中的值。

答案 2 :(得分:0)

你可以试试这个

Matcher m = Pattern.compile("(?s)\\b(.+?):(.*?)\\b(.+?)\\n").matcher(your text);
while (m.find())
    System.out.print(m.group(1).trim() + "," + m.group(3).trim() + " ");