我试图在php中为preg_match_all编写一个RegEx,以匹配2个$符号中的字符串,如$abc$,但前提是它没有空格,例如,我不需要匹配$ab c$。我写了这个正则表达式/[\$]\S(.*)[\$]/U和一些变体,但不能让它工作。
preg_match_all
$
$abc$
$ab c$
/[\$]\S(.*)[\$]/U
6uxekuva1#
您的正则表达式:[\$]\S(.*)[\$]
[\$]\S(.*)[\$]
[\$]
[]
\$
[$]
\S(.*)
\n
See regex in use here
\$\S+\$
\S+
$re = '/\$\S+\$/'; $str = '$abc$ $ab c$'; preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0); var_dump($matches);
pw9qyyiw2#
我想这会适合你的需要。https://regex101.com/r/WgUwh9/1
\$([a-zA-Z]*)\$
它将匹配任何长度的a-Z,两个$之间没有空格
2条答案
按热度按时间6uxekuva1#
概述
您的正则表达式:
[\$]\S(.*)[\$]
[\$]
-在[]
中转义$
没有意义,因为它已经被解释为文字字符。没有必要把\$
放在[]
里面,因为\$
是转义版本。只需使用[$]
或\$
中的一个即可。\S(.*)
匹配任何非空格字符(一次),后跟任何字符(\n
除外)任意次数代码
See regex in use here
\$
按字面匹配$
\S+
匹配任何非空格字符一次或多次\$
按字面匹配$
用法
pw9qyyiw2#
我想这会适合你的需要。
https://regex101.com/r/WgUwh9/1
它将匹配任何长度的a-Z,两个
$
之间没有空格