我正在尝试在php中为preg_match_all
写一个RegEx,以匹配2 $
个符号内的字符串,例如$abc$
,但前提是它不是$ab c$
有空格,例如,我不需要匹配/[\$]\S(.*)[\$]/U
。
我写了这个正则表达式{{1}}和一些变体,但无法让它发挥作用。
感谢您的帮助。
答案 0 :(得分:1)
你的正则表达式:[\$]\S(.*)[\$]
[\$]
- 在$
内转义[]
没有意义,因为它已被解释为文字字符。将\$
置于[]
内是没有意义的,因为\$
是转义版本。只需使用其中一个[$]
或\$
。\S(.*)
匹配任何非空格字符(一次),后跟任意字符(\n
除外)任意次数\$\S+\$
\$
按字面意思匹配$
\S+
匹配任何非空白字符一次或多次\$
按字面意思匹配$
$re = '/\$\S+\$/';
$str = '$abc$
$ab c$';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
var_dump($matches);
答案 1 :(得分:0)