繁体   English   中英

想要一个正则表达式,它将验证Java变量之间只有一个逗号

[英]want a regular expression which will validate java variables with only one comma in between

我有一个正则表达式,用于验证字符串。

String s = SELECT column1,column2 GROUPBY column3 AS AliasName
regex = ^SELECT\s+[[a-zA-Z_$][a-zA-Z_$0-9]*,*]+[a-zA-Z_$][a-zA-Z_$0-9]?\s+GROUPBY\s+[[a-zA-Z_$][a-zA-Z_$0-9]*,*]+[a-zA-Z_$][a-zA-Z_$0-9]?\s+AS\s+[a-zA-Z_$][a-zA-Z_$0-9]*$

该验证有效,但是我需要更改正则表达式的帮助,因此它仅允许在每个Java变量之间使用逗号,并且不允许在第一列之前使用逗号。

例如,以下字符串不匹配,但可以匹配:

String s2 = SELECT ,column1,,column2 GROUPBY column3 AS AliasName

另外,我想更改它,以便SELECTGROUPBYAS可以大写或小写。 我知道我可以交替使用| 但我希望采用其他方式。

像这样尝试:

(?i)^SELECT ([a-zA-Z_$][a-zA-Z_$0-9]+,)*([a-zA-Z_$][a-zA-Z_$0-9]+) (?:(GROUPBY) ([a-zA-Z_$][a-zA-Z_$0-9]+,)*([a-zA-Z_$][a-zA-Z_$0-9]+))?(?: AS ([a-zA-Z_$][a-zA-Z_$0-9]+))?

在线演示
代码样例

允许小写字母的最简单方法是使用内联修饰符(?i)将正则表达式切换为不区分大小写。

PS:您的查询看起来不完整。 没有FROM部分? PPS:您可能要研究不同的解决方案,因为正则表达式不能完全匹配和验证SQL语法。 您可以尝试标记查询 或者,甚至更好的是,使用解析器。 ANTLR有一些SQL语法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM