Java 已准备报表的正则表达式

Java 已准备报表的正则表达式,java,regex,oracle,prepared-statement,Java,Regex,Oracle,Prepared Statement,我正在尝试用Java构建解析应用程序,它解析Oracle准备好的 作为概念证明,我试图为上述链接中的setter方法提供一个正则表达式,例如:setString()、setInt()等 setter语句可以有2个或更多参数以及参数位置 setDate(int parameterIndex, Date x, Calendar cal) setInt(int parameterIndex, int x) 因此正则表达式应该能够: tell me which setter method it is

我正在尝试用Java构建解析应用程序,它解析Oracle准备好的

作为概念证明,我试图为上述链接中的setter方法提供一个正则表达式,例如:setString()、setInt()等

setter语句可以有2个或更多参数以及参数位置

setDate(int parameterIndex, Date x, Calendar cal)
setInt(int parameterIndex, int x)
因此正则表达式应该能够:

tell me which setter method it is 
get the parameter position
get the associated values (including blank/empty string )
我试过这个

set[A-Z].+([1-9]+,.*,.*)

这是部分有效的,它仅在两个参数中失败。空值也不会被识别。

它应该是这样的:

set(\w+)\((\d+)(,[^,]+)+\)
  • set(\w+)
    -使用以下字符搜索“set”,并将以下字符作为第一组返回
  • \(…\)
    -搜索(…)<代码>\是转义字符
  • (\d+)
    -查找数字并将其作为第二组返回
  • ,[^,]+
    -查找除逗号以外的任何字符,并在其后添加1个或多个字符
  • (,[^,]+)+
    -查找重复1+次的前一个逗号+非逗号组,并将最后一个作为组返回#3

  • 我不认为它与每个参数都匹配。每个参数都不在组内:。我想有些事我不明白你的正则表达式是怎么工作的。。。它应该匹配
    2个或多个参数
    。你能提供一个关于这个正则表达式的测试例子吗?@vincentPHILIPPE我还不明白你到底不清楚什么?即使通过提供的链接,您也可以发现
    setDate(1)
    返回的
    正则表达式与主题字符串不匹配。
    。将其更改为
    setDate(1,2)
    ,您将得到
    Match 1…
    @vincentPHILIPPE第一个参数匹配组2,
    (,[^,]+)+
    检查是否有一个或多个“逗号+非逗号”groups@vincentPHILIPPE如果要将所有表达式都作为子表达式,只需将该表达式包装在()中即可,即
    set(\w+)\(\d+),[^,]+)+)\)
    @SayanMalakshinov,它只适用于两个参数语句示例-setString(1,value)=>匹配1,value“setString(1,last name,first name)=>与“last name”不匹配