![](/img/trans.png)
[英]How to repair my C# regex that attempts to match 1-100 characters of letters, numbers, spaces, underscores and dashes
[英]regex issue c# numbers are underscores now
我的正则表达式删除了我的字符串中的所有数字(0-9)。 我不明白为什么所有数字都被_替换
编辑:我知道我的“_”正则表达式模式将字符更改为下划线。 但不是为什么数字!
谁能帮我吗? 我只需要像所有特殊字符一样删除。
在这里看到正则表达式:
string symbolPattern = "[!@#$%^&*()-=+`~{}'|]";
Regex.Replace("input here 12341234" , symbolPattern, "_");
Output: "input here ________"
问题是你的模式在中间使用了一个破折号,它起到了from )
到=
的ascii字符的范围。 这是一个细分:
)
:41 1
:49 =
:61 如你所见,数字从49开始,介于41-61之间,因此它们匹配并被替换。
您需要将-
放置在字符类的开头或结尾,以便字面匹配而不是作为范围:
"[-!@#$%^&*()=+`~{}'|]"
你必须逃避-
因为sequence [)-=]
包含数字
string symbolPattern = "[!@#$%^&*()\-=+`~{}'|]";
移动-
到列表的末尾,以便它被视为文字:
"[!@#$%^&*()=+`~{}'|-]"
或者,到前面 :
"[-!@#$%^&*()=+`~{}'|]"
就目前而言,它将匹配范围内的所有字符)-=
,其中包括所有数字。
你需要在你的正则表达式中逃避你的特殊角色。 例如,*是通配符匹配。 看看这些特殊字符对你的比赛意味着什么。
我没有使用C#,但通常“*”字符也是需要转义的控制字符。
以下匹配任何字符的整行,尽管“^”和“$”是多余的:
^.*$
这匹配字符串中出现的任意数量的“A”字符:
A*
来自oreilly的“猫头鹰”一书是您真正需要研究的内容:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.