正则表达式字符串里面有两个没有空格的特殊字符

时间:2018-01-17 20:27:59

标签: php regex

我正在尝试在中为preg_match_all写一个RegEx,以匹配2 $个符号内的字符串,例如$abc$,但前提是它不是$ab c$有空格,例如,我不需要匹配/[\$]\S(.*)[\$]/U

我写了这个正则表达式{{1}}和一些变体,但无法让它发挥作用。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

概述

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

答案 1 :(得分:0)

我认为这符合您的需求。

https://regex101.com/r/WgUwh9/1

Point.rotate90()

它将匹配两个\$([a-zA-Z]*)\$

之间没有空格的任何长度的a-Z