提问者:小点点

与字符串末尾的字符串匹配但后面不带换行符的正则表达式模式


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

'abc'

'abc
'

第二个在它的末端有换行符。只匹配第一个字符串的模式是什么?

'abc'

共1个答案

匿名用户

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

您需要以下正则表达式:

/abc\z/

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

/abc$/D

其中/D修饰符将使$的行为方式与\z相同。请参阅PHP. NET:

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

查看regex演示