猿问

如何在Java正则表达式中使用“和”运算符

package com.javaprograms;


import java.util.Arrays;

import java.util.regex.Matcher;

import java.util.regex.Pattern;


public class Remove_Elements_From_String {


    public static void main(String[] args) {


        String str = "Test123 is12 good123";


        int total = 0;


        Pattern p = Pattern.compile("[a-zA-Z]");

        String[] m = p.split(str);


        for (String s : m) {

            System.out.println(s.toString());

            int num = Integer.parseInt(s);

            total = total + num;

        }


        System.out.println("Total of above string is:" + total);

    }

}

我正在寻找类似的输出,123+12+123=258但它也正在打印空白。如何使用正则表达式忽略该空白。任何帮助,将不胜感激。我知道我们可以在正则表达式中使用“和”运算符,但不知道如何使用新的正则表达式

蛊毒传说
浏览 180回答 3
3回答

临摹微笑

只需回答“或”问题,您只需使用a |,然后您的模式将变为:Pattern.compile("([a-z]|[A-Z])+")是该+值的1-n倍。这里的问题是您的第一个String将为空,因为它将找到模式,因此它将拆分,但是模式的左侧为空。按照YCF_L建议的方式进行操作绝对是必经之路,因为您要查找的是数字,而不是其余的数字。通常,您应该始终将模式应用于所需的内容,否则最终将Universe排除在外而只是获得一组10个数字。

守候你守候我

“使用拆分并检查是否为空”的一种变体是使用流和filter。public class RegexNumOnly {   public static void main( String[] args ) {      String test = "Test123 is12 good443";      String[] tokens = test.split( "[a-zA-Z\\s]+" );      System.out.println( Arrays.toString( tokens ) );      System.out.println( Arrays.stream( tokens ).filter( s -> !s.isEmpty() )              .mapToInt( Integer::parseInt ).sum() );   }}我喜欢YCFmatcher().results()制作视频流,但我不知道Matcher会这样做。
随时随地看视频慕课网APP

相关分类

Java
我要回答