【发布时间】:2021-03-27 17:49:04
【问题描述】:
我是 Regex 的新手,我正在尝试使用 Java 的 Regex 从字符串中删除非数字字符。
字符串可以在数字之后有字母,并且空格可以出现在数字之前、数字和字母之间以及字母之后。
例如,一个有效的字符串可以是" -23 asdf"。
我编写了以下正则表达式:"(\\s*)[^-?][^0-9][\\s*a-zA-Z.\\s*]",并且我正在使用 replaceAll 方法去除非数字字符 replaceAll(regex, "")
我的想法是\\s* 匹配零次或多次空格字符[^-?] 保留可选的减号[^0-9] 保留数字字符[\\s*a-zA-Z.\\s*] 匹配之前的空格和任何字母字符之后。\
但是,当我尝试使用输入 " -23 asdf" 运行此代码时,我得到了 -2 的意外结果
我做错了什么?
【问题讨论】:
-
我觉得
[^0-9]只保留一个字符,需要加+ -
[^-?]不正确。你想要-?没有任何括号。?出现在方括号内时不是特殊字符。括号表示数字前面必须有一个字符,既不是连字符也不是问号。