regex 正则表达式字符串包含2个特殊字符,不含空格

3hvapo4f  于 2023-05-19  发布在  其他
关注(0)|答案(2)|浏览(213)

我试图在php中为preg_match_all编写一个RegEx,以匹配2个$符号中的字符串,如$abc$,但前提是它没有空格,例如,我不需要匹配$ab c$
我写了这个正则表达式/[\$]\S(.*)[\$]/U和一些变体,但不能让它工作。

6uxekuva

6uxekuva1#

概述

您的正则表达式:[\$]\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);
pw9qyyiw

pw9qyyiw2#

我想这会适合你的需要。
https://regex101.com/r/WgUwh9/1

\$([a-zA-Z]*)\$

它将匹配任何长度的a-Z,两个$之间没有空格

相关问题