我正在尝试在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)
答案 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() + " ");