Java正则表达式使用表别名查找特定表的所有列
在下面的查询中,我需要使用别名T_1搜索table1的所有列Java正则表达式使用表别名查找特定表的所有列,java,regex,Java,Regex,在下面的查询中,我需要使用别名T_1搜索table1的所有列 从表1 T_1、表2 T_2中选择T_1.name、T_1.age、T_2.dept,其中T_1.id=T_2.id 回答:姓名、年龄、身份证 我使用下面的表达式,因为我想在出现特殊字符时结束搜索。在下面的表达式中,当存在“=”时,我将结束搜索,但当存在非aplpha数字字符时,我希望进行概括 “(?i)\\b”+T\u 1+“\\.”“+”[a-zA-Z]*([^\\=]+)” 正则表达式应该也适用于下面的查询, 从T_1.id>1
从表1 T_1、表2 T_2中选择T_1.name、T_1.age、T_2.dept,其中T_1.id=T_2.id
回答:姓名、年龄、身份证
我使用下面的表达式,因为我想在出现特殊字符时结束搜索。在下面的表达式中,当存在“=”时,我将结束搜索,但当存在非aplpha数字字符时,我希望进行概括
“(?i)\\b”+T\u 1+“\\.”“+”[a-zA-Z]*([^\\=]+)”
正则表达式应该也适用于下面的查询,
从T_1.id>100的表1中选择T_1.name、T_1.age
(?i)\bT_1\.(\w+)
看。注意\w+
与“特殊”字符不匹配,仅与字母、数字或下划线匹配。如果不允许使用下划线,请将\w+
替换为[^\w.]+
,或\p{Alnum}
并附加\b
字边界:
(?i)\bT_1\.([^\W_]+)\b
详细信息
-机箱在安装模式下打开(?i)
-单词边界\b
-T\u 1\.
子字符串T\u 1.
-第1组:一个或多个字母、数字或(\w+)
。若要排除。
并仅匹配字母或数字,请使用
或([^\W\u]+)
并附加(\p{Alnum}+)
单词边界\b
String regex1 = "(?i)\\bT_1\\.(\\w+)";
String regex2 = "(?i)\\bT_1\\.([^\\W_]+)\\b";
“(?i)\\bT\u 1\\.(\\w+)”
?您需要在标识符后添加单词边界。不要寻找一个实际的字符,而是一个单词边界(因为它也可能是字符串的结尾,就像你有其中t_2.id=t_1.id
。你的[a-zA-Z]*
实际上已经足够了,这不能匹配非字母数字字符(甚至数字字符)因此,它将在=
处停止,空格或逗号[a-zA-Z]
不足以匹配aplpha数字字符。至少应使用[a-zA-Z0-9]
或\p{Alnum}
/[^\W\uz]