为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

蛊毒传说 2021-04-16 18:15:42
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但它也正在打印空白。如何使用正则表达式忽略该空白。任何帮助,将不胜感激。我知道我们可以在正则表达式中使用“和”运算符,但不知道如何使用新的正则表达式
查看完整描述

3 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

只需回答“或”问题,您只需使用a |,然后您的模式将变为:

Pattern.compile("([a-z]|[A-Z])+")

是该+值的1-n倍。

这里的问题是您的第一个String将为空,因为它将找到模式,因此它将拆分,但是模式的左侧为空。

按照YCF_L建议的方式进行操作绝对是必经之路,因为您要查找的是数字,而不是其余的数字。通常,您应该始终将模式应用于所需的内容,否则最终将Universe排除在外而只是获得一组10个数字。



查看完整回答
反对 回复 2021-04-21
?
守候你守候我

TA贡献1802条经验 获得超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会这样做。


查看完整回答
反对 回复 2021-04-21
  • 3 回答
  • 0 关注
  • 179 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信