我正在用regex做一个简单的语言sql,我正在解析CREATE TABLE语句,但是不起作用。我用这个:
reti = regcomp(®ex, "CREATE TABLE [a-zA-Z]\\((.*)\\)", REG_EXTENDED);
很简单,我只是为了学。。。
正则表达式怎么了?
最佳答案
除了只处理一个字母的SQL表之外,您要么省略左括号前的空白,要么根据SQL和regex引擎/string语法,对表达式括号进行转义。
检查:
[A-Za-z]+\\s*
如果它不起作用,加号不被识别,
[A-Za-z][A-Za-z]*\\s*
不管是
\\\\(
还是只是\\(
(应该是后者)。但最好确定)。这支持
Antinoo
和cUsToMeRs
等名称,但不支持Invoices_New
或Suppliers2014
。您可能需要在regex中添加数字和下划线。因为表名可能不会以数字开头,所以您需要[A-Z_a-z][A-Z_a-z0-9]*\\s*\\(([^;]*)\\)
关于c - 用正则表达式解析CREATE TABLE SQL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27534392/