拆分此模式的最有效方法
Best efficient way to split this pattern
我有一个包含数千行的文件,如下所示:
node: { title: "0" label: "sub_401000" color: 76 textcolor: 73 bordercolor: black }
我需要的是提取标题值和标签值。例如在上面的行中。我需要提取 0 和 sub_401000。我可以拆分它们,但这需要很多时间。
我想知道执行此过程的最有效方法是什么?
您可以尝试使用此正则表达式并在可能的情况下编译它,因为它会被重复使用。 (注意:它用于使用括号捕获匹配项)
(\w+): "*(\w*)
应该做这样的事情(注意我假设标题和引号之间有一个 space。
public class Test {
public static void main(String[] args)
{
String str = "node: { title: \"0\" label: \"sub_401000\" color: 76 textcolor: 73 bordercolor: black }";
//String regex = ".*title: \"(.*)\".*label: \"(.*)\""; better regex below suggested by pschemo
String regex = "title: \"([^\"]*)\".*label: \"([^\"]*)\"";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(str);
if(m.find())
{
String title = m.group(1);
String label = m.group(2);
System.out.println(title);
System.out.println(label);
}
}
}
输出:
0
sub_401000
我有一个包含数千行的文件,如下所示:
node: { title: "0" label: "sub_401000" color: 76 textcolor: 73 bordercolor: black }
我需要的是提取标题值和标签值。例如在上面的行中。我需要提取 0 和 sub_401000。我可以拆分它们,但这需要很多时间。 我想知道执行此过程的最有效方法是什么?
您可以尝试使用此正则表达式并在可能的情况下编译它,因为它会被重复使用。 (注意:它用于使用括号捕获匹配项)
(\w+): "*(\w*)
应该做这样的事情(注意我假设标题和引号之间有一个 space。
public class Test {
public static void main(String[] args)
{
String str = "node: { title: \"0\" label: \"sub_401000\" color: 76 textcolor: 73 bordercolor: black }";
//String regex = ".*title: \"(.*)\".*label: \"(.*)\""; better regex below suggested by pschemo
String regex = "title: \"([^\"]*)\".*label: \"([^\"]*)\"";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(str);
if(m.find())
{
String title = m.group(1);
String label = m.group(2);
System.out.println(title);
System.out.println(label);
}
}
}
输出:
0
sub_401000