我不确定,我认为这是不可能的,但我想我还是会问。
我想用一个量仪,它是一种元炭。例如:
括号、括号等,( ),……
但一切都是真的。
这不是我需要做的,而是我试图写一个转义例程作为一个项目的一部分。
那么,有什么问题?这个问题出现在正则体中,而它实际上不是一个元字符。
它是一个文字,类似于:
/ \( \) /,将用(和)替换正斜线浮标。
例如,在Perl中,这些方法不起作用
=~ m( \( \) )
=~ m( \\( \\) )
=~ m( \\\( \\\) )
=~ m( \\\\( \\\\) )
括号没有多少转义,就会分配一个反斜杠(文字\( )。
除除器上的反斜杠总是被移除,其余反斜杠则受正常引用规则的约束。这总是导致偶数反斜杠。
PHP显然也是如此。
就像我说的,我不会在正常的操作中用元字符来表示,这个
只是我正在尝试编写的实用程序(现在似乎是在写jepardy )。
我只想使用基本的转义规则,避免扫描字符串
中的文字(转义)元字符的选定参数的比较
regex文本体。
Perl使用正确的q()和qq() (遗憾的是不是qr() )。
它做到这一点的同时,消除了越轨和脱扣器的逃避。
所以q( \\\( \\\) )导致了\( \)。
谢谢你的帮助。
编辑
经过一些研究,我发现这是不可能的,所以效用被取消了。
不过,谢谢你的宝贵意见。我对Perl的数组印象深刻
引用选项,特别是“像运算符一样的报价”,这是一项工作
但是这样的话,测定仪才是真正的引号运算符,而不是一个标尺。
发布于 2014-01-04 23:13:19
我不确定您是在询问Perl还是PHP。我只知道Perl的事
Regex文字被解析了两次,一次由Perl编译器解析,一次由regex编译器解析。
\Q和\L )时找到文字的结尾。这将产生regex模式(作为字符串)和匹配选项(例如,不区分大小写的匹配)。
qr/\/\(/生成模式/\( (/未转义)。类似地,
qr(\/\()生成模式\/( ((未转义)。/\(生成一个与/(完全匹配的正则表达式,而
\/(生成正则表达式语法错误。若要生成与(完全匹配的正则表达式,则需要生成模式\(或等效的模式。以下是您的选择:
qr/\(/ (不要使用它作为分隔符)$d='('; qr(\Q$d\E) (不要在文字中使用它)qr(\Q\(\E) (使用\Q在\(变成(之后插入转义)qr(\x28) (使用等价的东西)qr([\(]) (以不需要转义的方式使用它)到目前为止,最好的选择是选择一个不同的分隔符:一个不是元字符,或者不是模式中没有使用的分隔符。这是微不足道的,因为它只对硬编码模式重要。
发布于 2014-01-04 20:12:34
我不知道PHP,但是您可以在Perl中使用\Q:
"()" =~ m(\Q\(\)\E) and print "YES\n"使用一个成员的字符类应该同时在Perl和PHP中工作:
"()" =~ m([(][)]) and print "YES\n"发布于 2014-01-04 20:32:18
你能把你的例子发展得更精确一点吗?
因为
如果原始字符串-> '\('
然后/[\\][(]/将匹配它
https://stackoverflow.com/questions/20925925
复制相似问题