Вопросительные знаки в регулярных выражениях: что они означают, где они используются здесь? - PullRequest
1 голос
/ 22 декабря 2010

Может ли кто-нибудь объяснить, что они имеют в виду, где они используются?

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

-Спасибо

1 Ответ

4 голосов
/ 22 декабря 2010

A ? делает символ перед ним необязательным, что в данном случае является `.На высоком уровне это означает, что автор этого кода допускает $ tablename или `$ tablename`.

Обратите внимание, что указанное регулярное выражение также соответствует` $ tablename и$ tablename`, но такой случай, вероятно, очень маловероятен.Можно изменить его, чтобы исключить такие случаи, используя обратные ссылки :

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

Более подробную информацию об этом операторе можно найти здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...