当前位置: 首页 > 知识库问答 >
问题:

Java regex-删除非数字字符

沈琛
2023-03-14

但是,当我尝试使用“-23 ASDF”的输入运行此代码时,我得到了-2的意外结果

我做错了什么?

共有1个答案

戚令秋
2023-03-14

下面是一个可行的方法:

String input = "hello world -23 as-df blah blah blah";
String output = input.replaceAll("[^\\d-]|-(?=\\D)", "");
System.out.println(output);

这将打印:

-23

这里使用的regex表示匹配:

[^\\d-]   any non numeric character EXCEPT for dash (i.e. spare -)
|         OR
-(?=\\D)  remove dash if NOT followed by a number
 类似资料:
  • 问题内容: 我需要从字符串中删除所有不在集合中或不是空格的字符。 有人有功能吗? 问题答案: 听起来您几乎已经知道自己想做的事情,基本上将其定义为正则表达式。

  • 问题内容: 我得到的任务是从文本文件或字符串中删除所有非数字字符,包括空格,然后在旧字符旁边打印新结果,例如: 之前: 后: 由于我是初学者,所以我不知道从哪里开始。请帮忙 问题答案: 最简单的方法是使用正则表达式

  • 我正在尝试验证一些输入以删除一组字符。只允许字母数字字符加、句点、下划线、连字符。我在这里测试了正则表达式http://gskinner.com/RegExr/它与我想要删除的内容匹配,所以我不确定为什么返回相反的内容。我错过了什么? 我的最终目标是输入并获得"。 我尝试过: 返回

  • 问题内容: 我想将以下字符串转换为提供的输出。 我还没有发现,将处理特殊字符,如任何解决方案,,,等。 基本上,我只是想摆脱所有不是字母数字的东西。这是我尝试过的… 尝试多个步骤 结果 任何帮助,将不胜感激。 工作解决方案: 问题答案: 删除非字母数字字符 以下是/正确的正则表达式,用于从输入字符串中去除非字母数字字符: 请注意,这等效于-它包括下划线字符。要删除下划线,请使用例如: 输入格式错误

  • 问题内容: 尝试删除所有非0-9的字母和字符和一个句点。我正在使用,但它也会删除小数,如何也保留小数? 问题答案: 试试这个代码: 现在将包含。

  • 问题内容: 我在从字符串中删除非utf8字符时出现问题,这些字符无法正确显示。像这样的字符0x97 0x61 0x6C 0x6F(十六进制表示) 删除它们的最佳方法是什么?正则表达式还是其他? 问题答案: 使用正则表达式方法: 它搜索UTF-8序列,并将其捕获到组1中。它还与无法标识为UTF-8序列的一部分的单个字节匹配,但不捕获这些字节。替换是捕获到组1中的任何内容。这将有效删除所有无效字节。