Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.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 Android:复杂字符串需要正则表达式_Java_Android_Regex_Pattern Matching_Grammar - Fatal编程技术网

Java Android:复杂字符串需要正则表达式

Java Android:复杂字符串需要正则表达式,java,android,regex,pattern-matching,grammar,Java,Android,Regex,Pattern Matching,Grammar,我有绳子 String myData = "status:\" op en \" AND \"Managed Type\":\"El ectrical\" AND status:verified status:\"resolved\" OR Managed Type:\"Ci vil\""; 我需要区分字符串中的所有值和属性 我已经尝试过一个带有模式的正则表达式,它在某种程度上满足了需求,但对于复杂的解析需要帮助 Pattern pattern = Pattern.compile(

我有绳子

String myData = "status:\" op en \" AND \"Managed Type\":\"El ectrical\" AND status:verified status:\"resolved\" OR Managed Type:\"Ci vil\"";
我需要区分字符串中的所有值和属性

我已经尝试过一个带有模式的正则表达式,它在某种程度上满足了需求,但对于复杂的解析需要帮助

Pattern pattern = Pattern.compile(
                "\\s*[OR|AND]?\\s*(\"?[[\\s*]?\\w*[\\s*]?]*\"?)\\:\"?(([\\s*\\(\\)<>/\\\\\\$\\=\\#\\+%^'`&!{}:;|\\?\\*\\.\\[\\],~@-]?\\w*[\\(\\)<>/\\\\\\$\\=\\#\\+%^'`&!{}:;|\\?\\*\\.\\[\\],~@-]?\\s*)*)\"?\\s*[OR|AND]?\\s*",
                Pattern.CASE_INSENSITIVE);
        Matcher matcher = pattern.matcher(mydata);
        while (matcher.find()) {
            System.out.println(matcher.group(1) + " : " + matcher.group(2));
        }
公认结果

status :  op en 
"Managed Type" : El ectrical
status : verified 
status: resolved
Managed Type : Ci vil

提前感谢。

我也遇到了同样的问题,我尝试了以下正常工作的正则表达式字符串(请注意,我在iOS中尝试过):


我也有同样的问题,我尝试了以下正常工作的正则表达式字符串(请注意,我在iOS中尝试过):


当您的正则表达式看起来像一个时,是时候重新考虑您的方法了。我觉得您可能希望倾向于使用解析器而不是正则表达式。为什么
状态:已验证状态:\“已解决”
没有用和/或分隔?“这是有效的吗?”比芬,我很久以前就看过这个链接了。我从中学到了很多,也尝试过这个,但没有成功。如果你能在这个问题上帮我的忙,那就太好了。。谢谢。当您的正则表达式看起来像一个时,可能会重复,是时候重新考虑您的方法了。我觉得您可能希望使用解析器而不是正则表达式。为什么
status:verified status:\“resolved\”
没有用AND/OR分隔?“这是有效的吗?”比芬,我很久以前就看过这个链接了。我从中学到了很多,也尝试过这个,但没有成功。如果你能在这个问题上帮我的忙,那就太好了。。谢谢
status :  op en 
"Managed Type" : El ectrical
status : verified 
status: resolved
Managed Type : Ci vil
NSString *regExPattern = @"(\\w*|\"[\\w\\s]{1,}\"):(\"[\\w\\s]{1,}\"?|\\w*)";