Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 计算正则表达式_C#_Regex - Fatal编程技术网

C# 计算正则表达式

C# 计算正则表达式,c#,regex,C#,Regex,我有一个表示calcul的字符串,我想用regex替换所有以$开头的数据 例如: value : $Var1+10*$Var2/$Var3-$Var4 我想要4组: $Var1 $Var2 $Var3 $Var4 我试过这个正则表达式: \$.+?)[+-\/*] 对于3个第一组($Var1$Var2$Var3)可以,但对于$Var4则不行。 这是因为$Var4刚好在字符串末尾之前,我没有找到在列表中添加“字符串末尾”的解决方案 我试过: \$.+?)[+-\/*$] \$.+?)[

我有一个表示calcul的字符串,我想用regex替换所有以$开头的数据

例如:

value : $Var1+10*$Var2/$Var3-$Var4
我想要4组:

$Var1 $Var2 $Var3 $Var4
我试过这个正则表达式:

 \$.+?)[+-\/*]
对于3个第一组
($Var1$Var2$Var3)
可以,但对于
$Var4
则不行。 这是因为
$Var4
刚好在字符串末尾之前,我没有找到在列表中添加“字符串末尾”的解决方案

我试过:

\$.+?)[+-\/*$] 

\$.+?)[+-\/*\$]
但不是工作

因此,我希望有任何解决方案在我的列表[]中添加“字符串结尾”

谢谢


Charly

如果您想要一个提供变量名的正则表达式,那么它就是:

\$Var\d+
在字符串的开头或结尾开始搜索时,不必添加任何内容。Regex不需要这个。对于测试字符串“$Var1+10*$Var2/$Var3-$Var4”,这将只返回所有变量名。看

如果变量名不一定包含Var,但总是以美元符号开头,那么可以使用下面的正则表达式来匹配它们

\$\w+

这是一个众所周知的问题,不能在字符类中使用零宽度断言,它们在那里失去了特殊的意义。你可以做的是一个替换组,或者完全修改整个模式(最好)<代码>\$。+?)[+-\/*]不可能工作,因为1)有一个不成对的括号,2)
-
创建一个范围,您必须将
-
放在类的开始/结束处或转义。谢谢,这正是我想要的:))