Java正则表达式使用表别名查找特定表的所有列

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

在下面的查询中,我需要使用别名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>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.
    子字符串
  • (\w+)
    -第1组:一个或多个字母、数字或
    。若要排除
    并仅匹配字母或数字,请使用
    ([^\W\u]+)
    (\p{Alnum}+)
    并附加
    \b
    单词边界
Java用法:

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]