英文:
RegEx for PreparedStatements
问题
以下是翻译好的部分:
我正在尝试在Java中构建解析应用程序,用于解析Oracle的预编译语句。
作为概念验证,我正在尝试为上面链接中的setter方法编写一个正则表达式,例如:setString(),setInt()等等。
这些setter语句可以有2个或更多参数以及参数位置。
setDate(int parameterIndex, Date x, Calendar cal)
setInt(int parameterIndex, int x)
因此,正则表达式应能够:
- 告诉我它是哪个setter方法
- 获取参数位置
- 获取关联的值(包括空/空字符串)
我尝试过以下正则表达式:
set[A-Z].+([1-9]+,.*,.*)
这部分正则表达式在某些情况下可以工作,但对于只有2个参数的情况会失败。空值也无法被识别。
英文:
I am trying to build parsing application in Java, which parses Oracle's prepared statements.
As a proof of concept, i am trying to come up with a regex for setter methods found in the above link, for example: setString() , setInt() etc..
The setter statements can have 2 or more arguments along with parameter position.
setDate(int parameterIndex, Date x, Calendar cal)
setInt(int parameterIndex, int x)
So the Regex should be able:
tell me which setter method it is
get the parameter position
get the associated values (including blank/empty string )
I have tried with this
set[A-Z].+([1-9]+,.*,.*)
This works partially, it fails for just 2 arguments. Empty values are not recognized as well.
答案1
得分: 1
应该是这样的一个表达式:
set(\w+)((\d+)(,[^,]+)+)
1. `set(\w+)` - 查找后跟字符的“set”并将其作为第一组返回。
2. `\(....\)` - 查找 (...). `\`是转义字符。
3. `(\d+)` - 查找数字并将其作为第二组返回。
4. `,[^,]+` - 查找逗号,并找到逗号后的一个或多个除逗号外的任何字符。
5. `(,[^,]+)+` - 查找先前的逗号+非逗号组,重复1次或更多次,并将最后一个作为第三组返回。
英文:
It should be something like this one:
set(\w+)\((\d+)(,[^,]+)+\)
set(\w+)
- searches'set' with following characters and return following characters as a first group.\(....\)
- searches (...).\
is an escape character(\d+)
- finds numbers and returns it as a second group,[^,]+
- finds , and following 1 or more any characters except comma(,[^,]+)+
- finds previous comma+not-comma groups repeated 1+ times and returns last of them as a group #3
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论