Java regex到grep多行数据 我有一个大的文本数据,从中我能够达到特定的部分。具体部分如下:
我需要将文本分开并分组存储 我尝试使用以下正则表达式:Java regex到grep多行数据 我有一个大的文本数据,从中我能够达到特定的部分。具体部分如下:,java,regex,Java,Regex,我需要将文本分开并分组存储 我尝试使用以下正则表达式: String REGEX ="(Caption)\\s=.*?(VMware USB.*)\"\\;\\n((?:(\\w+)\\s+=\\s+(.*)\\n) {1,21}?)"; 通过应用正则表达式,我得到了gp1“caption”、gp2“vmware usb仲裁服务”、gp3“waithint”和gp4“0”。 我需要获取21行的所有数据 但它只获取第一行和最后一行 一个正则表达式不能匹配任意数量的组。 您应该放弃多行匹配,并
String REGEX ="(Caption)\\s=.*?(VMware USB.*)\"\\;\\n((?:(\\w+)\\s+=\\s+(.*)\\n) {1,21}?)";
通过应用正则表达式,我得到了gp1“caption”、gp2“vmware usb仲裁服务”、gp3“waithint”和gp4“0”。
我需要获取21行的所有数据但它只获取第一行和最后一行 一个正则表达式不能匹配任意数量的组。
您应该放弃多行匹配,并使用全局修饰符在每行上使用正则表达式。然后可以循环查看结果
。。。或者按照Deepak Bala所说的去做并使用属性。似乎组号在
*
、+
或{…}
语句中被覆盖。因此,在执行类似于(?:(…)*
)的操作时,组1将为每个新匹配项覆盖,因此,在打印组1时,您将只看到最后一个匹配项
但是,您可以这样做:(根据需要更改)
将打印:
Name = Caption
Value = "Universal Plug and Play Device Host"
Name = CheckPoint
Value = 0
Name = CreationClassName
Value = "Win32_Service"
Name = Description
Value = "Provides support to host Universal Plug and Play devices"
使用
java.util.Properties
阅读这篇文章不是更容易吗?我必须以与所示相同的方式进行操作,并且需要在单个正则表达式中获取数据。有可能吗?
String str = "Caption = \"Universal Plug and Play Device Host\"\n"+
" CheckPoint = 0\n"+
" CreationClassName = \"Win32_Service\"\n"+
" Description = \"Provides support to host Universal Plug and Play devices\"";
String regex = "(?:^|\n)\\s*(\\w*)\\s*=\\s*(.*?)(?=\r?\n|$)";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(str);
while (m.find()) {
System.out.println("Name = " + m.group(1));
System.out.println("Value = " + m.group(2));
}
Name = Caption
Value = "Universal Plug and Play Device Host"
Name = CheckPoint
Value = 0
Name = CreationClassName
Value = "Win32_Service"
Name = Description
Value = "Provides support to host Universal Plug and Play devices"