%sign在preg_match_all中做了什么?

时间:2016-02-25 09:55:03

标签: php regex preg-match-all

我正在使用this库和这行文字

#asdfasdf #日本語 スペース @漢字 #日本語 あ http://url file:///url「おくむら」最高ー!…

它给了我正确的价值

#asdfasdf #日本語

但在代码中,regex

中有%
'%(\A#(\w|(\p{L}\p{M}?)|-)+\b)|((?<=\s)#(\w|(\p{L}\p{M}?)|-)+\b)|((?<=\[)#.+?(?=\]))%u'

这个百分号是做什么的?

在iOS中,它没有像这样的百分号。

"(\\A#(\\w|(\\p{L}\\p{M}?)|-)+\\b)|((?<=\\s)#(\\w|(\\p{L}\\p{M}?)|-)+\\b)|((?<=\\[)#.+?(?=\\]))"

在php中它给了我错误:preg_match_all(): Unknown modifier '|'

这个百分号是做什么的?

1 个答案:

答案 0 :(得分:0)

没有,它是将正则表达式与其他选项分开的分隔符。它们在preg_*库中是必需的,请参阅http://php.net/manual/en/regexp.reference.delimiters.php

请注意,如果您在正则表达式中未使用%( ... )将用作分隔符,当您需要在正则表达式中使用它们时会导致错误不要逃避他们。

在您的情况下发生了这种情况:

(\\A#(\\w|(\\p{L}\\p{M}?)|
                        ^ Here the regex engine thinks you are closing the expression