我正在练习我的正则表达式外观,为此,我试图从 SQL 插入语句中提取表名。我有正则表达式(?<=INSERT INTO )\w+(?= (\(|VALUES).+)
,我正在 String 上测试它INSERT INTO tests VALUES (regex, test)
。虽然我知道我的正则表达式没有精心完成,但我希望它能够匹配tests
我输入的子字符串。
String.split
我正在使用 Java 的正则表达式引擎,并且正在打印我使用正则表达式和使用正则表达式时发生的结果Pattern.matches
。我得到以下看似矛盾的结果
regex> (?<=INSERT INTO )\w+(?= (\(|VALUES).+)
string> INSERT INTO tests VALUES (regex, test)
[INSERT INTO , VALUES (regex, test)]
regex> (?<=INSERT INTO )\w+(?= (\(|VALUES).+)
string> INSERT INTO tests VALUES (regex, test)
false
现在只是为了记录下来,产生第一个结果的代码是
Arrays.toString(searchString.split(regex))
而第二个来自
Pattern.matches(regex, searchString)
不是split
将匹配项上的字符串拆分为其参数吗?这意味着正则表达式匹配tests
,因此结果[INSERT INTO , VALUES (regex, test)]
。那么,为什么Pattern.matches
返回 false 呢?我错过了什么?