Java 已准备报表的正则表达式
我正在尝试用Java构建解析应用程序,它解析Oracle准备好的 作为概念证明,我试图为上述链接中的setter方法提供一个正则表达式,例如:setString()、setInt()等 setter语句可以有2个或更多参数以及参数位置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
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”不匹配