求一正则表达式,匹配最后一次出现的一段字符串

Lewe2010 发布于 2016/11/02 16:22
阅读 1K+
收藏 0

String sql = " select * from t where t.name = '1' and t.uuu = 2 and t.eee = 3 order by xxx";



求一个正则表达式,匹配最后一次出现的 and ... = ...遇到空格结束,后面可能是order by 也可能是别的所以不能当作条件


加载中
0
吴中勤
吴中勤

正则表达式: negative look ahead

匹配一个位置,该位置之后不能匹配一个模式 (?!pattern)

这里,and之后不能再有and=最后一个and , ===> (?!.*and.*)

js测试:

var sql="select * from t where t.name = '1' and t.uuu = 2 and t.eee = 3 order by xxx"

var re=/and\s*(\S*?)\s*=\s*(\S*)(?!.*and.*)/g


re.exec(sql)

输出:["and t.eee = 3 ", "t.eee", "3"]

echooy
echooy
回复 @Lewe2010 : \S*?表示非空白字符零次或多次
L
Lewe2010
回复 @dormi330 : 把(?!.*and.*)改成(?!\\s*and.*)就不行了,咋回事啊
吴中勤
吴中勤
\S是非空白
L
Lewe2010
问题1: 请问(\S*?)的含义是? 问题2: and t.eee= 等号后面的内容没匹配到
0
iyangyuan
iyangyuan

按照sql语法,and后边不一定是=哦!

0
echooy
echooy
试一下\\s*\\S+\\s*=\\s*\\S+\\s+(?!and)
返回顶部
顶部