我正在用regex做一个简单的语言sql,我正在解析CREATE TABLE语句,但是不起作用。我用这个:

reti = regcomp(&regex,  "CREATE TABLE [a-zA-Z]\\((.*)\\)", REG_EXTENDED);

很简单,我只是为了学。。。
正则表达式怎么了?

最佳答案

除了只处理一个字母的SQL表之外,您要么省略左括号前的空白,要么根据SQL和regex引擎/string语法,对表达式括号进行转义。
检查:

[A-Za-z]+\\s*

如果它不起作用,加号不被识别,
[A-Za-z][A-Za-z]*\\s*

不管是\\\\(还是只是\\((应该是后者)。但最好确定)。
这支持AntinoocUsToMeRs等名称,但不支持Invoices_NewSuppliers2014。您可能需要在regex中添加数字和下划线。因为表名可能不会以数字开头,所以您需要
[A-Z_a-z][A-Z_a-z0-9]*\\s*\\(([^;]*)\\)

关于c - 用正则表达式解析CREATE TABLE SQL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27534392/

10-12 00:17
查看更多