Java正则表达式,用于查找特定的字符串

时间:2018-12-20 13:30:00

标签: java regex

我有一个长字符串文件,我想按特定项目将其拆分。

String line = "{{[Metadata{"this, is my first, string"}]},{[Metadata{"this, is my second, string"}]},{[Metadata{"this, is my third string"}]}}"

String[] tab = line.split("(?=\\bMetadata\\b)");

因此,现在当我迭代制表符时,我会得到以单词"Metadata"开头的行,但是我希望以以下行开头:

"{[Metadata"

我尝试过类似的事情:

 String[] tab = line.split("(?=\\b{[Metadata\\b)");

但是它不起作用。 请问有人可以帮我怎么做吗?

2 个答案:

答案 0 :(得分:2)

您可以使用

(?=\{\[Metadata\b)

请参见a demo on regex101.com


请注意,反斜杠需要在Java中转义,以使其成为

(?=\\{\\[Metadata\\b)

答案 1 :(得分:0)

这是使用正式模式匹配器的解决方案。我们可以尝试使用以下正则表达式来匹配您的内容:

(?<=Metadata\\{\")[^\"]+

这使用了一个后向检查来检查Metadata标记,并以双引号结尾。然后,它将匹配所有内容,直到右双引号。

String line = "{{[Metadata{\"this, is my first, string\"}]},{[Metadata{\"this, is my second, string\"}]},{[Metadata{\"this, is my third string\"}]}}";
String pattern = "(?<=Metadata\\{\")[^\"]+";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(line);

while (m.find( )) {
    System.out.println(m.group(0));
}

this, is my first, string
this, is my second, string
this, is my third string