public class RegularTest {
public static void main(String[] args){
p("str".matches("..."));
//public String replaceAll(String regex, String replacement)
//public String replaceFirst(String regex, String replacement)
p("A00123lB".replaceFirst("\\d","*"));
p("A00123lB".replaceAll("\\d", "*"));
// []表示范围,{}表示长度
// [0-9]表示在0到9之前的一个数
// \\d{0,10}表示0到10之间的长度
// Greedy 数量词
// X? X,一次或一次也没有
// X* X,零次或多次
// X+ X,一次或多次
// X{n} X,恰好 n 次
// X{n,} X,至少 n 次
// X{n,m} X,至少 n 次,但是不超过 m 次
// "\\" 匹配 反斜线字符(\)
// "\\".matches("\\\\") 一个\匹配的时候要写四个
// [abc] a、b 或 c(简单类)
// [^abc] 任何字符,除了 a、b 或 c(否定)
// [a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)(并集[a-z]|[A-Z])
// [a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集)
// [a-z&&[def]] d、e 或 f(交集)
// [a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减去)
// [a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](减去)
// . 任何字符(与行结束符可能匹配也可能不匹配)
// \d 数字:[0-9]
// \D 非数字: [^0-9]
// \s 空白字符:[ \t\n\x0B\f\r]
// \S 非空白字符:[^\s]
// \w 单词字符:[a-zA-Z_0-9]
// \W 非单词字符:[^\w]
// ^ 行的开头
// $ 行的结尾
// \b 单词边界
// \B 非单词边界
// p(" \n".matches("^[\\s&&[^\\n]]*\\n$"));这个匹配空白字付(开始是空白,但不是换行,结果是换行)
// p("hello sir".matches("^h.*r$"));
// "lan ".matches(".*\\z$") 这样的不能单词边界,要用行的结尾\z
// Reluctant 数量词(这个是勉强的,先用最少的去匹配)
// X?? X,一次或一次也没有
// X*? X,零次或多次
// X+? X,一次或多次
// X{n}? X,恰好 n 次
// X{n,}? X,至少 n 次
// X{n,m}? X,至少 n 次,但是不超过 m 次
// Possessive 数量词 (这个用来追求效率,直接打最多的,不行的话就不行了)
// X?+ X,一次或一次也没有
// X*+ X,零次或多次
// X++ X,一次或多次
// X{n}+ X,恰好 n 次
// X{n,}+ X,至少 n 次
// X{n,m}+ X,至少 n 次,但是不超过 m 次
// 文字替换(首次出现字符)
// Pattern pattern = Pattern.compile("正则表达式");
// Matcher matcher = pattern.matcher("正则表达式 Hello World,正则表达式 Hello World");
// 替换第一个符合正则的数据
// System.out.println(matcher.replaceFirst("Java"));
//
// 文字替换(全部)
// Pattern pattern = Pattern.compile("正则表达式");
// Matcher matcher = pattern.matcher("正则表达式 Hello World,正则表达式 Hello World");
// 替换第一个符合正则的数据
// System.out.println(matcher.replaceAll("Java"));
// 去除html标记
// Pattern pattern = Pattern.compile("<.+?>", Pattern.DOTALL);
// Matcher matcher = pattern.matcher("<a href=\"index.html\">主页</a>");
// String string = matcher.replaceAll("");
// System.out.println(string);
// 截取http://地址
// 截取url
// Pattern pattern = Pattern.compile("(http://|https://){1}[\\w\\.\\-/:]+");
// Matcher matcher = pattern.matcher("dsdsds<http://dsds//gfgffdfd>fdf");
// StringBuffer buffer = new StringBuffer();
// while(matcher.find()){
// buffer.append(matcher.group());
// buffer.append("\r\n");
// System.out.println(buffer.toString());
// }
// 匹配中文的Regular [\\u4e00-\\u9fa5]
//电子邮件的匹配
Pattern email = Pattern.compile("[\\w[.-]]+@[\\w[.-]]+\\.[\\w]+");
Matcher emailMatcher = email.matcher("langhu@qq.com");
//Matcher是匹配整个字符串
//find()找子串,start()找到子串开始的位置,end()找到子串结束的位置,
//但必须能找到子串才能用start,end这两个方法reset()重置
p(emailMatcher.matches());
//appendReplacement()和appendTail()方法
//忽略大小写Pattern.CASE_INSENSITIVE
String str = "langhua lanHUA LANghua lANGHUa dsfd LANGHUA T";
Pattern langhuaParttern = Pattern.compile("langhua", Pattern.CASE_INSENSITIVE);
Matcher langhuaMatcher = langhuaParttern.matcher(str);
StringBuffer sb = new StringBuffer();
int i = 0;
while(langhuaMatcher.find()){
i++;
if(i%2==0){
langhuaMatcher.appendReplacement(sb,"xiaolanghua");
}else{
langhuaMatcher.appendReplacement(sb,"dalanghua");
}
}
langhuaMatcher.appendTail(sb);
p(sb.toString());
//分组group()返回的是子串
String num = "123aa-1234aa-12384bb-0-*-*";
Pattern nump = Pattern.compile("(\\d{3,5})(\\w{2})");
Matcher numm = nump.matcher(num);
while(numm.find()){
p(numm.group(1));
}
Pattern pattern = Pattern.compile(".{1,3}?\\d");
Matcher marcher = pattern.matcher("2地3基13ab2cef2");
if(marcher.find()){
p(marcher.group());
p(marcher.start()+"-"+marcher.end());
}
}
public static void p(Object o){
System.out.println(o);
}
}
分享到:
相关推荐
Java正则表达式是Java编程语言中用于处理字符串的强大工具,它基于模式匹配的概念,能够高效地进行文本搜索、替换和解析。在Java中,正则表达式主要通过`java.util.regex`包来实现,提供了Pattern和Matcher两个核心...
Java正则表达式匹配工具是IT领域中一种强大的文本处理工具,它利用正则表达式(Regular Expression)的规则来查找、替换或者提取文本中的特定模式。正则表达式是一种特殊的字符序列,能够帮助程序员或者用户高效地...
Java正则表达式验证IP地址 Java正则表达式验证IP地址是指使用Java语言中的正则表达式来验证IP地址是否符合标准。IP地址是指在网络通信中用来标识设备的地址,它是一种逻辑地址,通过它可以找到网络中的设备。在...
Java正则表达式是编程语言Java中的一个强大工具,它用于模式匹配、数据验证和文本检索替换。在Java中,正则表达式是通过java.util.regex包提供的接口和类来实现的。`regex-smart.jar`这个库显然是为了简化开发者在...
本篇将围绕“使用Java正则表达式分析处理日志”这一主题,探讨如何利用Java的正则表达式功能来提取、过滤和操作日志数据。 首先,我们需要理解正则表达式的基本概念。正则表达式(Regular Expression)是一种模式...
以下是对这些文档标题所涉及的Java正则表达式知识点的详细解释: 1. **正则表达式之道** 这个主题可能涵盖了正则表达式的基础概念,包括元字符、字符类、量词和分组。元字符如`.`代表任意字符,`^`表示行首,`$`...
Java正则表达式是一种强大的文本处理工具,广泛用于验证字符串、查找特定模式和替换文本。在Java中,正则表达式提供了简洁而灵活的方式来处理字符串,使得编程人员能够以更高效的方式实现各种文本操作。 正则表达式...
Java正则表达式库是Java开发中不可或缺的一部分,它为开发者提供了一种强大的文本匹配工具。在Java中,正则表达式(Regular Expression)是一种模式匹配语言,用于处理字符串操作,如查找、替换或提取特定模式的数据...
Java正则表达式测试工具是面向开发者和爱好者的一款实用程序,它可以帮助用户验证和调试他们的正则表达式。在Java编程环境中,正则表达式是一个强大的字符串处理工具,广泛用于数据验证、文本搜索和替换等任务。这款...
### 使用Java正则表达式实现一个简单的身份证号码验证 #### 一、背景介绍 身份证号码是中国公民的身份标识,由15位或18位数字组成(早期为15位,后改为18位)。其中,第18位是校验码,可能是数字0~9或者大写字母X。...
### 常用Java正则表达式知识点 #### 一、引言 正则表达式是一种强大的工具,用于处理文本并查找模式。多种编程语言,包括Perl、PHP、Python、JavaScript以及Java等均内置了对正则表达式的支持。本文将详细介绍Java...
Java正则表达式是Java编程语言中用于处理字符串的强大工具,它允许我们通过模式匹配来查找、替换或分割文本。这个“java正则表达式截取demo”提供了一个可以直接运行的示例,帮助开发者理解如何在Java中使用正则...
Java正则表达式是Java编程语言中的一个强大工具,它用于模式匹配和字符串处理,尤其在数据验证、文本检索和替换等方面发挥着重要作用。本教程是专为初学者设计的HTML版,旨在帮助读者快速掌握Java正则表达式的概念和...
Java正则表达式是Java编程语言中用于处理字符串的强大工具,它允许我们通过模式匹配来查找、替换或分割文本。在Android开发中,正则表达式尤其重要,因为它们可以帮助我们验证用户输入、处理文本数据或者进行复杂的...
Java正则表达式是编程语言Java中用于处理字符串和文本的强大工具。它允许开发者通过模式匹配来执行复杂的文本分析和操作。在Java中,正则表达式的操作主要涉及两个核心类:`java.util.regex.Matcher`和`java.util....
Java正则表达式是Java编程语言中用于处理字符串的强大工具,它允许程序员通过模式匹配来查找、替换或分割文本。在Java中,正则表达式是通过`java.util.regex`包提供的API来实现的。本讲解将深入探讨Java正则表达式的...
Java正则表达式是编程语言中的一个重要组成部分,用于文本处理和模式匹配。Jakarta ORO(Oracle Regular Expressions for Java)是Apache软件基金会开发的一个强大的Java正则表达式库,它为开发者提供了更为灵活和...
Java正则表达式 Java 正则表达式 图片版 携带方便,查阅方便!~