我正在尝试编写一个字符串“清理”函数,该函数只允许使用字母数字字符,以及一些其他字符,例如下划线、句点和减号(破折号)字符。
目前我们的函数使用源字符串的直接 char 迭代,但我正在尝试将其转换为 RegEx,因为从我一直在阅读的内容来看,它更干净,性能更高(这对我来说似乎在直接迭代中倒退,但是在我得到一个正常工作的正则表达式之前,我无法对其进行分析。)
这个问题对我来说是双重的。一,我知道以下正则表达式...
[a-zA-Z0-9]
...匹配一系列字母数字字符,但我如何还包括下划线、句点和减号?您是否只是用“\”字符转义它们并将它们与其余部分放在括号之间?
其次,对于不属于匹配项的任何字符(即其他标点符号,例如“?”),我们希望将其替换为下划线。
我的想法是改为匹配一系列所需的字符,我们匹配一个不在所需范围内的字符,然后替换它。我认为正则表达式是将克拉作为括号之间的第一个字符,如下所示......
[^a-zA-Z0-9]
这是正确的方法吗?