Java 正则表达式匹配除注释之外的所有内容
考虑到PSQL语句的Java正则表达式代码,我在尝试匹配语句中的注释之外的所有内容时遇到了一些问题。 这并不是要获得包含注释的行Java 正则表达式匹配除注释之外的所有内容,java,regex,Java,Regex,考虑到PSQL语句的Java正则表达式代码,我在尝试匹配语句中的注释之外的所有内容时遇到了一些问题。 这并不是要获得包含注释的行 ^(?!.*?(?:-- [a-z]*-[a-z]*: [a-zA-z]*)).*$ 这是PSQL: CREATE TABLE "test_table" ( "user_id" serial PRIMARY KEY, "username" VARCHAR (50) UNIQUE NOT NULL, -- foreign-key: t_supply_typ
^(?!.*?(?:-- [a-z]*-[a-z]*: [a-zA-z]*)).*$
这是PSQL:
CREATE TABLE "test_table" (
"user_id" serial PRIMARY KEY,
"username" VARCHAR (50) UNIQUE NOT NULL, -- foreign-key: t_supply_type
"password" VARCHAR (50) NOT NULL,
"email" VARCHAR (355) UNIQUE NOT NULL, -- foreign-key: t_supply_type
"created_on" TIMESTAMP NOT NULL,
"last_login" TIMESTAMP
);
我遗漏了什么?一个简单的方法是删除所有出现的
--
,直到行尾。考虑:
String line = "\"username\" VARCHAR (50) UNIQUE NOT NULL, -- foreign-key: t_supply_type";
line = line.replaceAll("\\s*--.*$", "");
System.out.println(line);
这张照片是:
"username" VARCHAR (50) UNIQUE NOT NULL,
假设您已经将整个SQL查询读入一个字符串,上述替换也应该仍然有效。一般来说,您需要一个解析器,而不是正则表达式来完成这类工作。正则表达式不会解决这个问题。哦,嗯,我想我可以考虑为它制作一个PSQL查询解析器。