有没有将POSIX转换为PCRE的实用程序?我对PCRE上的PHP手册有些困惑,虽然我会尝试在PCRE上找到更多信息,但我想知道是否有人设计了这样的实用程序。有没有将POSIX转换为PCRE的实用程序?
或者,如果有人会解释如何以下转换,这也将是罚款:
ereg("^#[01-9A-F]{6}$", $sColor)
但请解释它是如何做,不只是告诉我的转换。
有没有将POSIX转换为PCRE的实用程序?我对PCRE上的PHP手册有些困惑,虽然我会尝试在PCRE上找到更多信息,但我想知道是否有人设计了这样的实用程序。有没有将POSIX转换为PCRE的实用程序?
或者,如果有人会解释如何以下转换,这也将是罚款:
ereg("^#[01-9A-F]{6}$", $sColor)
但请解释它是如何做,不只是告诉我的转换。
preg_match("/^#[01-9A-F]{6}$/", $sColor)
在这种情况下,你只需要添加两个分隔符。 在Perl中,你可以写一些类似
if (s =~ /x.+y/) { print "match"; }
正如你所看到的,实际的正则表达式被封装在//中。如果你想在正则表达式上设置一个选项,你把它放在第二个/之后,例如将表达式默认切换为ungreedy /x.+y/U
preg_match("/^#[01-9A-F]{6}$/", $sColor) preg_match("!^#[01-9A-F]{6}$!", $sColor) preg_match("#^\#[01-9A-F]{6}$#", $sColor) // need to escape the # within the expression here preg_match("^#[01-9A-F]{6}$", $sColor),所有这一切都相同,最好选择一个不出现在表达式中的字符。
顺便说一句,PHP支持PCRE和POSIX正则表达式。这里是POSIX正则表达式的PHP手册部分,所以你不必转换它们:http://www.php.net/manual/en/book.regex.php
我知道这件事。但是,POSIX将会在PHP 5.3中被弃用,所以我只是想让所有的东西都保持最新。 – waiwai933 2009-06-21 05:18:48
preg_match("/^#[01-9A-F]{6}$/D", $sColor)
注意D
modifier。人们总是忘记它。没有它$
将允许最终换行符。像“#000000 \ n”这样的字符串会通过。这是POSIX和PCRE之间的细微差别。
而且,当然,[01-9]
可以重写为[0-9]
。
有趣的是你写的01-9,为什么不是0-9? – VolkerK 2009-06-21 06:47:48