当前位置: 首页 > 编程笔记 >

java正则表达式实现提取需要的字符并放入数组【ArrayList数组去重复功能】

空成天
2023-03-14
本文向大家介绍java正则表达式实现提取需要的字符并放入数组【ArrayList数组去重复功能】,包括了java正则表达式实现提取需要的字符并放入数组【ArrayList数组去重复功能】的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了java正则表达式实现提取需要的字符并放入数组。分享给大家供大家参考,具体如下:

这里演示Java正则表达式提取需要的字符并放入数组,即ArrayList数组去重复功能。

具体代码如下:

package com.test.tool;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.regex.*;
public class MatchTest {
  public static void main(String[] args)
  {
    String regex = "[0-9]{5,12}";
    String input = "QQ120282458,QQ120282458 QQ125826";
    Pattern p = Pattern.compile(regex);
    Matcher m = p.matcher(input);
    ArrayList al=new ArrayList();
    while (m.find()) {
      al.add(m.group(0));
    }
    System.out.println("去除重复值前");
    for (int i=0;i<al.size();i++)
    {
      System.out.println(al.get(i).toString());
    }
    //去除重复值
    HashSet hs=new HashSet(al);
    al.clear();
    al.addAll(hs);
    System.out.println("去除重复值后");
    for (int i=0;i<al.size();i++)
    {
      System.out.println(al.get(i).toString());
    }
  }
}

输出结果为:

去除重复值前
120282458
120282458
125826
去除重复值后
125826
120282458

改进版:弄成一个bean:

package com.test.tool;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.regex.*;
public class MatchTest {
  private String regex;
  private String input;
  private ArrayList al;
  public String getRegex() {
    return regex;
  }
  public void setRegex(String regex) {
    this.regex = regex;
  }
  public String getInput() {
    return input;
  }
  public void setInput(String input) {
    this.input = input;
  }
  public ArrayList getAl() {
    return al;
  }
  public void setAl(ArrayList al) {
    this.al = al;
  }
  public MatchTest(String regex,String input)
  {
    Pattern p=Pattern.compile(regex);
    Matcher m=p.matcher(input);
    ArrayList myal=new ArrayList();
    while (m.find())
    {
      myal.add(m.group());
    }
    HashSet hs=new HashSet(myal);
    myal.clear();
    myal.add(hs);
    this.setRegex(regex);
    this.setInput(input);
    this.setAl(myal);
  }
  public MatchTest(){}
  public static void main(String[] args){
     String regex1 = "[0-9]{5,12}";
     String input1="QQ120282458,QQ120282458 QQ125826";
     //String input1="QQ";
    MatchTest mt=new MatchTest(regex1,input1);
    for (int i=0;i<mt.getAl().size();i++)
    {
      System.out.println(mt.getAl().get(i).toString());
    }
  }
}

PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:

JavaScript正则表达式在线测试工具:
http://tools.jb51.net/regex/javascript

正则表达式在线生成工具:
http://tools.jb51.net/regex/create_reg

希望本文所述对大家java程序设计有所帮助。

 类似资料:
  • 问题内容: 如何在Java Regex中定义重复组? 假设一个2位数[0-9] {2}多次用分隔, 这是可能的还是唯一的机会? 编辑:我想验证并提取。 问题答案: 最简单的方法是使用两步解决方案:1)首先,验证字符串,然后2)用您选择的定界符分割字符串: 在此,匹配以两位数字开头的整个字符串,然后匹配出现的0个或多个和结尾的两位数字,然后用逗号分割该字符串。注意你不需要和美女主播与图案内,因为该方

  • 问题内容: 我正在使用Java的正则表达式库。我想针对以下格式验证字符串: 数字的数量未知。我想确保该字符串中至少有一个数字,并且每两个数字之间用逗号分隔。我也想从字符串中获取数字。 ( 注意: 这只是一个简化的示例,string.split无法解决我的实际问题) 我写了以下正则表达式: 验证部分起作用。但是,当我尝试提取数字时,我得到了2组: regex101版本:https://regex10

  • 我不完全确定这个标题是否有意义,但我不确定如何更好地解释。我正在尝试匹配一个字符串,该字符串以一个或多个,以相同数量的。我尝试了许多不同的方法,但我不知道如何在regex中执行此操作,或者是否可能!有人能把我送到正确的方向吗? 例子 匹配: 匹配: 不匹配: 不匹配: 等等,你明白了。

  • 本文向大家介绍Java正则表达式提取字符的方法实例,包括了Java正则表达式提取字符的方法实例的使用技巧和注意事项,需要的朋友参考一下 正好遇到一个需求需要将字符串中特定的字符全部提取出来,这个如果是按常规的字符串处理的话非常的繁琐。于是想到用正则表达式来完成。项目需求是这样的:需要提取车牌号中最后一个数字,比如说:苏A7865提取5,苏A876X提取6 实现方法: 关于Matcher 中的几个方

  • 问题内容: 是否可以创建具有可变数量的组的正则表达式? 例如运行此之后… …我想要一些类似的东西 m.group(1) = “c” m.group(2) = “d” m.group(3) = “d” m.group(4)= “c”。 (背景:我正在解析一些数据行,“字段”之一正在重复。我想避免这些字段的循环。) 问题答案: 根据文档,Java正则表达式不能做到这一点: 与组关联的捕获输入始终是该组

  • 本文向大家介绍计算Java正则表达式的组数,包括了计算Java正则表达式的组数的使用技巧和注意事项,需要的朋友参考一下 通过将多个字符捕获为一组,可以将多个字符视为一个单元。您只需要将这些字符放在一组括号内即可。 您可以使用Matcher类的groupCount()方法计算当前匹配项中的组数。此方法计算当前匹配项中的捕获组数并返回。 示例 输出结果