【发布时间】:2018-08-02 10:56:19
【问题描述】:
我需要正则表达式的帮助,以从字符串中删除不需要的字符(在 Java 中)。 我用4个正则表达式解决了这个问题。 替换将被多次调用 [peeks: 50+ times/sec] 它并降低性能。 但我认为用一个表达式肯定可以,所以性能会有所提高。
TestString 是
" ! ... my-Cruc i@l_\\/Disp lay.Na#m3 ?;()! "
我喜欢用正则表达式执行的任务
- 删除所有前导非字母字符 - [字符串开头]
- 删除所有尾随的非字母数字字符 - [字符串结尾]
- 删除所有非字母数字字符(除了[_-.])
所以结果会是
my-Cruil_Display.Nam3
问题在于内置模式 Alnum 和 alpha 之间的切换,具体取决于字符串中的位置(开始、结束)和它们之间的异常字符 [_-.]。
在过去的几天里我尝试了很多次,但我没有让它工作。 删除前导非字母字符正在使用正则表达式
^([^\\p{Alpha}]+)?
但是,如果我附加“之间”,它就不再起作用了
使用正则表达式删除尾随的非字母字符
([^\\p{Alnum}]+$)
正在工作,但不能与所有其他正则表达式组合
最后一次尝试是
(^[^\\p{Alpha}]+)?[^\\p{Alnum}\\._-]+([^\\p{Alnum}]+$)
任何人都可以帮助完成这项工作
【问题讨论】: