Regex问题c#数字现在是下划线

本文关键字:下划线 数字 问题 Regex | 更新日期: 2023-09-27 17:49:14

我的Regex正在删除字符串中的所有数字(0-9)。我不明白为什么所有的数字都用_

代替

编辑:我理解我的"_"正则表达式模式将字符更改为下划线。但为什么不是数字!

有谁能帮我吗?我只需要删除所有的特殊字符。

查看此处的正则表达式:

 string symbolPattern = "[!@#$%^&*()-=+`~{}'|]";
Regex.Replace("input here 12341234" , symbolPattern, "_");
Output: "input here ________"

Regex问题c#数字现在是下划线

问题是你的模式在中间使用了一个破折号,它作为从)=的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