Java 正则表达式 原

package com.zhaogang.app.web.aspect;

/**
 * Created by weixiang.wu on 2017/9/20.
 */

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

public class RegexMatches {


    public static void main(String args[]) {
//        在表达式((A)(B(C))),有四个这样的组:
//        ((A)(B(C)))
//        (A)
//        (B(C))
//        (C)


        // 按指定模式在字符串查找
        String line = "This order was placed for QT3000! OK?";
        String pattern1 = "(\\D*)(\\d+)(.*)";

        int count1 = 0;

        // 创建 Pattern 对象
        Pattern r1 = Pattern.compile(pattern1);

        // 现在创建 matcher 对象
        Matcher m1 = r1.matcher(line);
        if (m1.find()) {
            for (int i = 0; i <= m1.groupCount(); i++) {
                count1++;
                System.out.println("Match number "+count1);
                System.out.println("start(): "+m1.start());
                System.out.println("end(): "+m1.end());
                System.out.println(m1.group(i));
            }
        } else {
            System.out.println("NO MATCH");
        }





        String str = "1234567890";
        String pattern = "((?<=\\d)\\d{3})+\\b";
        int count = 0;

        Pattern r = Pattern.compile(pattern);
        Matcher m = r.matcher(str);
        if (m.find()) {
            for (int i = 0; i <= m.groupCount(); i++) {
                count++;
                System.out.println("Match number "+count);
                System.out.println("start(): "+m.start());
                System.out.println("end(): "+m.end());
                System.out.println(m.group(i));
            }
        } else {
            System.out.println("NO MATCH");
        }



 /** 
   * 获取查询的字符串 
   * 将匹配的字符串取出 
   */
  private void getString(String str, String regx) { 
    //1.将正在表达式封装成对象Patten 类来实现 
    Pattern pattern = Pattern.compile(regx); 
    //2.将字符串和正则表达式相关联 
    Matcher matcher = pattern.matcher(str); 
    //3.String 对象中的matches 方法就是通过这个Matcher和pattern来实现的。 
       
    System.out.println(matcher.matches()); 
    //查找符合规则的子串 
    while(matcher.find()){ 
      //获取 字符串 
      System.out.println(matcher.group()); 
      //获取的字符串的首位置和末位置 
      System.out.println(matcher.start()+"--"+matcher.end()); 
    } 
  } 


//去除叠词
//reg.getReplace("12111123ASDASDAAADDD","(.)\\1+","$1");
/**
     * 字符串的替换
     */
    private void getReplace(String str, String regx,String replaceStr) {
        String stri = str.replaceAll(regx,replaceStr) ;
        System.out.println("正则表达式替换"+stri);
    }


    }
}
Match number 1
start(): 0
end(): 37
This order was placed for QT3000! OK?
Match number 2
start(): 0
end(): 37
This order was placed for QT
Match number 3
start(): 0
end(): 37
3000
Match number 4
start(): 0
end(): 37
! OK?
Match number 1
start(): 1
end(): 10
234567890
Match number 2
start(): 1
end(): 10
890

Process finished with exit code 0

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器学习入门

挑战程序竞赛系列(70):4.7后缀数组(2)

挑战程序竞赛系列(70):4.7后缀数组(2) 传送门:POJ 1509: Glass Beads 题意: The description of the ne...

21470
来自专栏机器学习入门

LWC 53:693. Binary Number with Alternating Bits

LWC 53:693. Binary Number with Alternating Bits 传送门:693. Binary Number with Alte...

26780
来自专栏Java Web

数据结构与算法(2)——栈和队列栈队列LeetCode 相关题目整理其他题目整理

栈是一种用于存储数据的简单数据结构(与链表类似)。数据入栈的次序是栈的关键。可以把一桶桶装的薯片看作是一个栈的例子,当薯片做好之后,它们会依次被添加到桶里,每一...

22430
来自专栏黑泽君的专栏

java中的lastIndexOf( )函数是什么意思

String中的lastIndexOf方法,是获取要搜索的字符、字符串最后次出现的位置。

21450
来自专栏程序员互动联盟

【java概念】String的常用方法

1、length() 字符串的长度   例:char chars[]={'a','b'.'c'};     String s=new String(chars)...

36580
来自专栏Python

python 中__setattr__, __getattr__,__getattribute__, __call__使用方法

object._getattr_(self, name) 拦截点号运算。当对未定义的属性名称和实例进行点号运算时,就会用属性名作为字符串调用这个方法。如果继承树...

23670
来自专栏静默虚空的博客

Java正则速成秘籍(一)之招式篇

导读 正则表达式是什么?有什么用? 正则表达式(Regular Expression)是一种文本规则,可以用来校验、查找、替换与规则匹配的文本。 又爱又恨的正...

19480
来自专栏郭耀华‘s Blog

Java集合框架(四)—— Queue、LinkedList、PriorityQueue

Queue接口   Queue用于模拟了队列这种数据结构,队列通常是指“先进先出”(FIFO)的容器。队列的头部保存在队列中时间最长的元素,队列的尾部保存...

40760
来自专栏nnngu

数据结构05 栈

这篇文章要总结的是栈,主要从以下几个方面来进行总结。 1、栈是什么 2、栈的存储结构 3、栈的常见操作及代码实现 1、栈是什么 栈是一种特殊的线性表,它限定了只...

37460
来自专栏算法与数据结构

归并排序详解 和逆序数计算

归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序...

22850

扫码关注云+社区

领取腾讯云代金券