Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从字符串中提取特定模式_Java - Fatal编程技术网

Java 如何从字符串中提取特定模式

Java 如何从字符串中提取特定模式,java,Java,我有一张excel表格,我正在逐行解析excel表格 我将从中获取此格式的字符串 query at.mycollection ntoreturn:1 reslen:1833 nscanned:1 nquery: { like_symbol: "SC!JNJ" } nreturned:1 bytes:1817etc... 我试图仅从字符串中提取nquery,因此输出必须如下所示 nquery: { like_symbol: "SC!JNJ" } 我试过这种方法 System.out.pri

我有一张excel表格,我正在逐行解析excel表格

我将从中获取此格式的字符串

query at.mycollection ntoreturn:1 reslen:1833 nscanned:1  nquery: { like_symbol: "SC!JNJ" }  nreturned:1 bytes:1817etc...
我试图仅从字符串中提取nquery,因此输出必须如下所示

nquery: { like_symbol: "SC!JNJ" }
我试过这种方法

System.out.println(s.split("nscanned:1")[1]);
我得到的结果是


nquery:{like_symbol:“SC!JNJ”}返回:1字节:1817etc.使用
子字符串

公共静态void main(字符串[]args){

String str=“query at.mycollection ntoreurn:1 reslen:1833 nscaned:1 nquery:{like_symbol:\'SC!JNJ\'}返回:1字节:1817etc…”;
int index=str.indexOf(“nquery:”);
int index2=str.indexOf(“nreturned:1”);
//一些验证
如果(索引!=-1&&index2!=-1&&index2
输出:
nquery:{like_symbol:“SC!JNJ”}


实际上,正则表达式适用于更复杂的情况,但如果您具有与您发布的相同的结构,
子字符串
就足够了

使用
子字符串

公共静态void main(字符串[]args){

String str=“query at.mycollection ntoreurn:1 reslen:1833 nscaned:1 nquery:{like_symbol:\'SC!JNJ\'}返回:1字节:1817etc…”;
int index=str.indexOf(“nquery:”);
int index2=str.indexOf(“nreturned:1”);
//一些验证
如果(索引!=-1&&index2!=-1&&index2
输出:
nquery:{like_symbol:“SC!JNJ”}


事实上,正则表达式适用于更复杂的情况,但如果您具有与您发布的相同的结构,
子字符串
就足够了

您可以尝试indexOf并随后使用子字符串

您可以尝试indexOf并随后使用子字符串

您可以尝试indexOf并随后使用子字符串
后的值
?是
nquery:
之后的值,始终使用
{
}
引用。通常我建议使用正则表达式,但在查看答案后,在这种情况下不是这样。然而,nReturn是否总是会被nReturn:1?我猜不会,所以您可能希望将第二个indexOf限制为“nreturned:”。@JaredBeekman,上面代码的正则表达式版本是什么?我对regex感觉很舒服。老实说,我不擅长构建regex。我总是使用一些在线评估工具或其他基于我碰巧使用的语言的工具。这个链接是针对Java的:通常我会推荐regex,但是在查看了答案之后,在这种情况下就不推荐了。然而,nReturn是否总是会被nReturn:1?我猜不会,所以您可能希望将第二个indexOf限制为“nreturned:”。@JaredBeekman,上面代码的正则表达式版本是什么?我对regex感觉很舒服。老实说,我不擅长构建regex。我总是使用一些在线评估工具或其他基于我碰巧使用的语言的工具。此链接适用于Java版本:
    String str = "query at.mycollection ntoreturn:1 reslen:1833 nscanned:1  nquery: { like_symbol: \"SC!JNJ\" }  nreturned:1 bytes:1817etc...";

    int index = str.indexOf("nquery:");
    int index2 = str.indexOf("nreturned:1");

    // some validation 
    if(index != -1 && index2 != -1 && index < index2){
        String str2 = str.substring(index, index2);

        str2 = str2.trim();

        System.out.println(str2);
    }
    else{
        System.err.println("Something wrong here");
    }
}