繁体   English   中英

如何使用正则表达式 java 删除删除以仅从字符串中获取数值?

[英]How to remove remove to take only numerical values from string using regex java?

我有以下字符串:

   String textString = "Power for CH2 234 45";

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

String texString="23445";

这里要避免在任何非数值之后的数值这里在我的字符串中想要避免在 H 之后的数值也有 2 但我只想制作一个像“23445”这样的字符串。

您可以使用正则表达式(?<?\w)\d+(?!\w)

import java.util.regex.MatchResult;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Main {
    public static void main(String[] args) {
        // Test
        Stream.of(
                    "Power for CH2 234 45",
                    "Power for 2CH C2H CH2 234 45"
                ).forEach(s -> System.out.println(s + " => " + getNumber(s)));
    
    }
    static String getNumber(String textString) {
        return Pattern.compile("(?<!\\w)\\d+(?!\\w)")
                .matcher(textString)
                .results()
                .map(MatchResult::group)
                .collect(Collectors.joining());
    }
}

Output:

Power for CH2 234 45 => 23445
Power for 2CH C2H CH2 234 45 => 23445

Stream版本:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
    public static void main(String[] args) {
        // Test
        String[] testStrings = { "Power for CH2 234 45", "Power for 2CH C2H CH2 234 45" };

        for (String s : testStrings) {
            System.out.println(getNumber(s));
        }
    }

    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();
    }
}

regex101正则表达式的解释:

在此处输入图像描述

有时使用正则表达式查找要保留的内容要比查找要删除的内容要容易得多。 在这种情况下,您希望保留纯粹由数字组成的“单词”。

使用 Java 9+,这很容易,使用正则表达式\b\d+\b

String textString = "Power for CH2 234 45";

String numString = Pattern.compile("\\b\\d+\\b").matcher(textString)
        .results().map(MatchResult::group).collect(Collectors.joining());

System.out.println(numString); // 23445

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM