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

如何从字符串中删除字母值,以及如何像描述中那样得到所需的字符串?

芮学
2023-03-14

我有以下字符串:

   String textString = "Value for CH2 234 45  HH 2546";

我需要一个正则表达式来删除数字之间的空白,但也要避免在数字之前有一个非数字值,如

String texString="23445 2546";

这里想要避免任何非数值后面的数值,这里在我的字符串中想要避免数值也在H后面,这里有2,但我只想做一个像“23445 2546”这样的字符串。如果有任何字母字符在那里,它应该被删除,并添加空格之间的数字。

 static String getNumber(String textString) {
    StringBuilder sb = new StringBuilder();
    Matcher matcher = Pattern.compile("(?<!\\w)\\d+(?!\\w)").matcher(textString);
    while (matcher.find()) {
        sb.append(matcher.group());
    }
    return sb.toString();
}

从上面的正则表达式和代码,我得到了输出:

    String texString="234452546";

所需输出:

    String texString="23445 2546";

共有1个答案

华建同
2023-03-14

您可以对匹配项使用此正则表达式:

\b\d+(?:\h(?!\h*\d))?

正则表达式演示

正则表达式解释:

  • \b:单词边界
  • \d+:匹配1+位
  • (?::启动可选非捕获组
    • \h:匹配水平空格
    • (?!\h*\d):否定前视,以断言匹配0个或更多空白空间后前面没有一个数字

    代码:

    String textString = "Value for CH2 234 45  HH 2546";
    final String re = "\\b\\d+(?:\\h(?!\\h*\\d))?";
    StringBuilder sb = new StringBuilder();
    Matcher matcher = Pattern.compile(re).matcher(textString);
    while (matcher.find()) {
        sb.append(matcher.group());
    }
    System.out.println(sb.toString());
    

    输出:

    23445 2546
    

    使用Java 9+.results()方法的Java代码:

    final String re = "\\b\\d+(?:\\h(?!\\h*\\d))?";
    String out = Pattern.compile(re)
                .matcher(textString)
                .results()
                .map(MatchResult::group)
                .collect(Collectors.joining());
    
    System.out.println(out);
    

 类似资料:
  • 从序列中删除所有两个按顺序排列的字母表,并保留至少一个不能删除更多组合的字母表 例如 请给出解决这个问题的任何建议或想法。无法思考如何以编程方式处理字母表序列。

  • 我应该编写一个函数,排除句子(字符串)中的某些字母(char)。我基本上也这么做了,但问题是我只剪掉了这个字母在句子中的第一次出现。 我需要如何更改最后一个函数以删除字母的所有外观?找到所有索引可能并不难,但真正的困难是之后将子字符串放在一起,这样您仍然只剩下一句话,而没有某些字母。因为如果我理解正确,索引越多,您需要添加的不同子字符串就越多。 目前我得到了这个。 我们的目标是:

  • 问题内容: 我正在编写python MapReduce字数统计程序。问题是数据中散布着许多非字母字符,我发现这篇文章从Python的字符串中剥离了除了字母数字字符之外的所有内容,这显示了使用正则表达式的一个很好的解决方案,但是我不确定如何实现它 恐怕我不确定该如何使用该库甚至正则表达式。我不确定如何将正则表达式模式正确地应用于传入的字符串(书的一行)以检索没有任何非字母数字字符的新行。 有什么建议

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

  • 必须是 我需要在单元音中变换带有装饰的元音,如下所示:á>a,à>a,â>a,以此类推;并删除点、连字符等特殊字符。 谢谢!

  • 问题内容: 我想删除特殊字符,例如: 使用Java从String中获取。 问题答案: 这取决于你定义为特殊字符的内容,但是请尝试: 请注意,该^字符不能是列表中的第一个字符,因为你要么必须对其进行转义,否则将意味着“除这些字符外的任何字符”。 另一个注意事项:-字符必须是列表中的第一个或最后一个,否则你必须对其进行转义,否则它将定义一个范围(例如,表示“ 范围内的所有字符” )。 所以,为了保持一