正则表达式中的问号:它们在这里使用的含义是什么?

时间:2010-12-22 14:09:13

标签: sql regex perl

有人可以解释他们使用它们的含义吗?

if(m/DROP TABLE IF EXISTS \`?$tableName\`?/ || m/CREATE TABLE \`?$tableName\`?/){
           $inside=1
}; 

-Thanks

1 个答案:

答案 0 :(得分:4)

?使得前面的字符可选,在这种情况下是`。在高级别,这意味着该代码的作者允许$ tablename `$ tablename`。

请注意,所述的正则表达式也匹配`$ tablename和$ tablename`,但这种情况可能不太可能。可以使用backreferences修改它以排除此类情况:

m/DROP TABLE IF EXISTS (\`?)$tableName\1 || m/CREATE TABLE (\`?)$tableName\2/

可以在here找到关于此运算符的进一步阅读。