Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.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,我正在开发一个java应用程序。其中一个模块需要一个搜索过滤器作为输入。搜索筛选器将具有名称、值参数。程序应能够检测和分析以下模式: 1. ((Name='Shaina')&(ID='26')) 2. (Name='Shaina') 我需要能够解析过滤器以获得键值对,如: Name='Shaina' ID='26' 我将使用这些名称-值对进行一些数据库查询和相关处理。 我从java正则表达式开始,但它看起来很复杂,因为参数的数量是动态的 你能建议一个有效的方法或者给我指出一个正确

我正在开发一个java应用程序。其中一个模块需要一个搜索过滤器作为输入。搜索筛选器将具有名称、值参数。程序应能够检测和分析以下模式:

 1. ((Name='Shaina')&(ID='26'))

 2. (Name='Shaina')
我需要能够解析过滤器以获得键值对,如: Name='Shaina' ID='26'

我将使用这些名称-值对进行一些数据库查询和相关处理。 我从java正则表达式开始,但它看起来很复杂,因为参数的数量是动态的

你能建议一个有效的方法或者给我指出一个正确的方向来实现这一点吗

谢谢,

Sash

对于非常基本的解析,可以使用类似regexp的
([A-Z,A-Z,0-9]+)='([A-Z,A-Z,0-9]+)”

测试和改进:)您的正则表达式如下:


在Java中,您可以使用a和a,请参见Lars Vogel。

对于非常基本的解析,您可以使用类似
([A-Z,A-Z,0-9]+)='([A-Z,A-Z,0-9]+)”

测试和改进:)您的正则表达式如下:


在Java中,您可以使用a和a,请参见Lars Vogel。

对于您的用例,我建议删除大括号和',在'&'上拆分,并解析键值对

示例代码

str = str.replaceAll("[()']", "");
String[] elements = str.split("&");
for (String elem : elements) {
  String[] pair = elem.split("=");
  String key = pair[0];
  String value = pair[1];
}

对于您的用例,我建议删除大括号和',在'&'上拆分并解析键值对

示例代码

str = str.replaceAll("[()']", "");
String[] elements = str.split("&");
for (String elem : elements) {
  String[] pair = elem.split("=");
  String key = pair[0];
  String value = pair[1];
}

是否按名称筛选表达式?我没有理解,所以我编辑了这个问题。谢谢。您还需要检测逻辑运算符还是只检测key=value部分?@zerologiko只检测key=value部分。ThanksIt可能值得您一看,您想按名称筛选表达式吗?我没有理解,所以我编辑了这个问题。谢谢。您还需要检测逻辑运算符还是只检测key=value部分?@zerologiko只检测key=value部分。谢谢你也许值得一看