0

我正在尝试在java中编写正则表达式以匹配来自特定文本的对(参数:值):

“顾客

Customer Name               :  JOHN DOE

City                  :  Chicago

Customer Id               :  123AWE32D2

System Id             :  004349

Register Date (yymmddww)      :  12020906 

"

作为输出我想要对:

客户名称,JOHN DOE City, Chicago 客户 ID,123AWE32D2 系统 ID,004349 注册日期 (yymmddww),12020906

可以有各种数量的参数。我需要有用于提取组的通用模式(参数名称):(值)。这是我的模式,我为匹配特定参数而编写:

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

4

3 回答 3

2

1)(.+):(.+)在多行模式下使用它。

意义:

.- 任何事物

:- 然后我们需要冒号

.- 再次任何东西

+- 至少一个字符

您有 2 组,在冒号之前和之后。

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

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

于 2013-08-29T09:46:25.340 回答
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() + " ");
于 2013-08-29T10:14:00.163 回答
0

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

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

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

于 2013-08-29T09:47:18.677 回答