Regex问题c#数字现在是下划线
本文关键字:下划线 数字 问题 Regex | 更新日期: 2023-09-27 17:49:14
我的Regex正在删除字符串中的所有数字(0-9)。我不明白为什么所有的数字都用_
代替编辑:我理解我的"_"正则表达式模式将字符更改为下划线。但为什么不是数字!
有谁能帮我吗?我只需要删除所有的特殊字符。查看此处的正则表达式:
string symbolPattern = "[!@#$%^&*()-=+`~{}'|]";
Regex.Replace("input here 12341234" , symbolPattern, "_");
Output: "input here ________"
问题是你的模式在中间使用了一个破折号,它作为从)
到=
的ascii字符范围。下面是详细说明:
-
)
: 41 -
1
: 49 -
=
: 61
如您所见,数字从49开始,范围在41-61之间,因此它们被匹配并替换。
您需要将-
放在字符类的开头或结尾,以便从字面上匹配它,而不是作为一个范围:
"[-!@#$%^&*()=+`~{}'|]"
必须转义-
,因为序列[)-=]
包含数字
string symbolPattern = "[!@#$%^&*()'-=+`~{}'|]";
将-
移动到列表的末尾,使其被视为文字:
"[!@#$%^&*()=+`~{}'|-]"
或者前面:
"[-!@#$%^&*()=+`~{}'|]"
将匹配)-=
范围内的所有字符,其中包括所有数字。
您需要转义正则表达式中的特殊字符。例如,*是一个通配符匹配。看看这些特殊字符对你的匹配有什么意义
我没有使用c#,但通常"*"字符也是一个需要转义的控制字符。
下面的命令匹配整行任意字符,尽管"^"answers"$"有些多余:
^.*$
匹配字符串中出现的任意数量的"A"字符:
A*
来自oreilly的"猫头鹰"书是你真正需要研究的:
http://shop.oreilly.com/product/9780596528126.do?green=b5b9a1a7 b828 - 5 -出价- 9 - d38 - 70 af661901b8& intcmp = af - mybuy - 9780596528126. - ip