Java 从字符串中解析有符号的数字
我有这样的字符串:Java 从字符串中解析有符号的数字,java,regex,parsing,regular-language,Java,Regex,Parsing,Regular Language,我有这样的字符串: "-------5548481818fgh7hf8ghf----fgh54f4578" -554848181878544578 我不想使用模式和匹配器进行解析。我有密码: string.replaceAll("regex", "")); 如何使regex排除除“-”以外的所有符号以获得类似字符串的字符串: "-------5548481818fgh7hf8ghf----fgh54f4578" -554848181878544578 这会奏效的 String Str
"-------5548481818fgh7hf8ghf----fgh54f4578"
-554848181878544578
我不想使用模式和匹配器进行解析。我有密码:
string.replaceAll("regex", ""));
如何使regex
排除除“-”以外的所有符号以获得类似字符串的字符串:
"-------5548481818fgh7hf8ghf----fgh54f4578"
-554848181878544578
这会奏效的
String Str = new String("-------5548481818fgh7hf8ghf----fgh54f4578-");
String tmp = Str.replaceAll("([-+])+|([^\\d])","$1").replaceAll("\\d[+-](\\d|$)","");
System.out.println(tmp);
您可以使用此负前瞻正则表达式:
String s = "-------5548481818fgh7hf8ghf----fgh54f4578";
String r = s.replaceAll("(?!^[-+])\\D+", "");
//=> -554848181878544578
(?!^-)\D
将替换除开头连字符以外的每个非数字
备选方案:抓住反面,而不是替换负片。您选择删除您不想要的字符,而不是抓取您想要的字符,这似乎是任意的。javascript中的示例:
s = "-------5548481818fgh7hf8ghf----fgh54f4578"
s = '-' + s.match(/[0-9]+/g).join('')
// "-554848181878544578"
这很简单..你从
----5548481818fgh7hf8ghf----fgh54f4578
到-554848181878544578
,你从中得到了什么?@支柱我已经更新了帖子。。。你能提高英语水平吗?作为一个以英语为母语的人,我觉得这很难理解。“我不想使用模式和匹配器解析”是什么意思?真的吗?“我有密码”谁在投否决票?我想这是个好主意,补充道。不知道为什么会被否决。是的,所有三个答案……似乎有人被冒犯了