我们假设我有这个变量名称: $$ 5 无功的# _ #的名称的# 1 !!
现在我要删除无效字符(以粗体显示)。规则是: 允许的字符是a-z,A-Z,下划线和0-9但是(此处出现)不是第一个字符。 (预期结果:Var_Name1)
我目前分两步执行此操作:
s/[^a-zA-Z_]//g
而不是s/^[0-9]//g
是否可以使用一个RegEx执行此操作?
感谢和问候
答案 0 :(得分:4)
这应该这样做:
s/^[^a-zA-Z_]+|[^a-zA-Z_0-9]+//g
此处g
表示全局替换。
答案 1 :(得分:1)
您当前的方法删除了第一步中的所有数字,因此第二步是毫无意义的,结果将是Var_Name
而不是预期的Var_Name1
。
您可以使用这样的模式来匹配要删除的内容:
^[^A-Za-z_]+|\W+
C#中的示例:
string name = "$$5Var#_#Name#1!!";
name = Regex.Replace(name, @"^[^A-Za-z_]+|\W+", String.Empty);
Console.WriteLine(name);
输出:
Var_Name1