是否有将POSIX转换为PHP的PCRE的实用程序?
是否有将POSIX转换为PHP的PCRE的实用程序?我对PCRE上的PHP手册有些困惑,虽然我将尝试查找有关PCRE的更多信息,但我想知道是否有人设计了这样一个实用程序 或者,如果有人解释如何转换以下内容,也可以:是否有将POSIX转换为PHP的PCRE的实用程序?,php,regex,posix,utilities,pcre,Php,Regex,Posix,Utilities,Pcre,是否有将POSIX转换为PHP的PCRE的实用程序?我对PCRE上的PHP手册有些困惑,虽然我将尝试查找有关PCRE的更多信息,但我想知道是否有人设计了这样一个实用程序 或者,如果有人解释如何转换以下内容,也可以: ereg("^#[01-9A-F]{6}$", $sColor) 但是请解释它是如何完成的,而不仅仅是告诉我转换过程。顺便说一句,PHP同时支持PCRE和POSIX正则表达式。这是PHP手册中关于POSIX正则表达式的部分,因此您不必转换它们:preg\u match(“/^[01
ereg("^#[01-9A-F]{6}$", $sColor)
但是请解释它是如何完成的,而不仅仅是告诉我转换过程。顺便说一句,PHP同时支持PCRE和POSIX正则表达式。这是PHP手册中关于POSIX正则表达式的部分,因此您不必转换它们:
preg\u match(“/^[01-9A-F]{6}$/”,$sColor),在这种情况下,您只需要添加两个分隔符
在perl中,您可以编写类似以下内容(s=~/x.+y/)
if ( s =~ /x.+y/ )
{ print "match"; }
{print“match”}
如您所见,实际的正则表达式封装在//。如果要在正则表达式上设置一个选项,请将其放在第二个/(默认情况下将表达式切换为ungreedy)/x.+y/Upcre现在模拟这种行为。虽然必须调用函数,但也必须提供分隔符并在第二个分隔符之后设置选项。在perl中,分隔符必须是/,使用pcre,您可以选择更自由的preg_匹配(“/^ 35;[01-9A-F]{6}$/”,$sColor) 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) preg#u match(“!^#[01-9A-F]{6}$!”,$sColor) preg#u match(“#^\#[01-9A-F]{6}$#”,$sColor)//需要在这里的表达式中转义# preg#u match(“^[01-9A-F]{6}$”,$sColor)与pcre一样,最好选择一个不出现在表达式中的字符。
preg#u match(/^[01-9A-F]{6}$/D“,$sColor)
请注意。人们总是忘记它。没有它,$
将允许最后一个换行符。类似“#000000\n”的字符串将传递。这是POSIX和PCRE之间的细微差别
当然,
[01-9]
可以重写为[0-9]
我知道这一点。然而,在PHP5.3中,POSIX将被弃用,所以我希望所有的东西都是最新的。这个答案已经过时了,你能更新它吗ereg()
现在不推荐了。如果你写01-9,为什么不写0-9?
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)