如何检测此CREATE TABLE SQL的括号之间的代码行?

时间:2018-05-28 16:58:58

标签: php regex regex-lookarounds regex-group

从以下代码中我只需要提取括号中的内容,而不使用它们。

create table if not exists `va_lottery`.`iso_4217`
(
    ccodealpha char(3) not null comment 'ISO alpha.',
    ccodenumeric char(3) not null comment 'ISO numeric',
    cminorunit varchar(4) default 0 comment 'Minor unit.',
    cname varchar(80) not null comment 'Name of the currency.',
    centity varchar(100) not null comment 'Entity.'
)
engine=innodb comment='ISO codes of coins.';

也就是说。只提取以下代码行。

    ccodealpha char(3) not null comment 'ISO alpha.',
    ccodenumeric char(3) not null comment 'ISO numeric',
    cminorunit varchar(4) default 0 comment 'Minor unit.',
    cname varchar(80) not null comment 'Name of the currency.',
    centity varchar(100) not null comment 'Entity.'

感谢您给予我的帮助。

1 个答案:

答案 0 :(得分:0)

假设您总是希望在第一个和最后一个括号之间捕获,这将起作用:

(?s)\(\s*(.*)\s*\)

https://regex101.com/r/MVs17e/1/

(?s)使.匹配多行。 .*贪婪并寻找最后一个)。括号前的反斜杠转义括号,因为它们是正则表达式中的特殊字符。 \s*是零或更多的空格,因此我们不会在封装括号之前/之后捕获空格。