【发布时间】:2019-08-30 07:59:02
【问题描述】:
我有一个代表计算的字符串,我想使用正则表达式替换所有以 $ 开头的数据。
示例:
value : $Var1+10*$Var2/$Var3-$Var4
我想要4组:
$Var1 $Var2 $Var3 $Var4
我试过这个正则表达式:
\$.+?)[+-\/*]
3 第一组($Var1 $Var2 $Var3) 可以,但$Var4 不行。
这是因为$Var4 就在字符串结尾之前,我找不到在列表中添加“字符串结尾”的解决方案。
我试过了:
\$.+?)[+-\/*$]
\$.+?)[+-\/*\$]
但不起作用。
所以我喜欢在我的列表 [] 中添加“字符串结尾”的任何解决方案。
谢谢,
查理
【问题讨论】:
-
这是一个众所周知的问题,你不能在字符类中使用零宽度断言,它们在那里失去了特殊意义。你可以做的是一个交替组,或者完全修改整个模式(最好)。
\$.+?)[+-\/*]无法工作,因为 1) 有一个不成对的括号,并且 2)-创建了一个范围,您必须将-放在类的开头/结尾或转义它。