正则表达式模式匹配字符串末尾的字符串,但后面没有换行符

时间:2016-07-04 18:11:31

标签: php regex string line-breaks pcre

我使用正则表达式模式我preg_match php函数。模式就是说'/abc$/'。它匹配两个字符串:

'abc'

'abc
'

第二个在结尾处有换行符。什么是只与第一个字符串匹配的模式?

'abc'

1 个答案:

答案 0 :(得分:4)

/abc$/"abc\n""abc"匹配的原因是$匹配字符串末尾的位置,或者(即使没有/m修饰符)换行符之前位于字符串末尾的位置。

您需要以下正则表达式:

/abc\z/

其中\z是字符串的明确非常结尾,或

/abc$/D

/D修饰符使$的行为与\z的行为相同。见PHP.NET

  

通过在编译或匹配时设置PCRE_DOLLAR_ENDONLY选项,可以更改dollar的含义,使其仅匹配字符串的最末端。

请参阅regex demo