最后匹配$

时间:2014-03-15 06:51:06

标签: php regex

我想在最后匹配一个$。

为什么不起作用:

<?php

$reg = '{$$}';
$str= 'helloc$a';
print preg_match($reg,$str);

它打印1 - 匹配。但我希望它匹配例如abc $或zzz $之类的输入。

2 个答案:

答案 0 :(得分:1)

$是正则表达式中的元字符,具有特殊含义 - 它在一行的末尾断言位置。如果您想匹配文字$,则需要将其转义,即使用\$代替$

$reg = '{\$$}';

正如Casmir在答案下面的评论部分所指出的那样,当最后一个$后面跟一个换行符时,这个模式也会匹配。为防止这种情况,您可以改为使用以下模式:

$reg = '{\$$}D';

设置D修饰符后,模式中的美元元字符仅匹配给定字符串的末尾。如果未设置此修饰符,$也会在最后一个字符之前匹配(如果它是换行符)。

答案 1 :(得分:-1)

$是PHP中的特殊字符。您应该在它之前添加\。试试这个: $ reg =&#39; / \ $$ /&#39;;