正則表達式基础及java使用

正則表達式基础

正則表達式语法(1)

普通字符:字母,数字。汉子,下划线以及没有特殊定义的标点符号都是“普通字符”。表达式中的普通字符。在匹配一个字符串的时候,匹配与之同样的一个字符

  • 简单的转义字符:

\n :代表换行符

\t :代表制表符

\\ :代表\本身

\^ ......  :代表匹配这字符本身

正則表達式语法(2)

  • 标准字符集合:

可以与多种字符匹配的表达式

注意区分大写和小写,大写是相反的意思

\d :随意一个数字,0~9中的随意一个

\w:随意一个字母或者下划线或者汉字。也就是A~Z,a~z,0~9中的随意一个

\s :包含空格,制表符。换行符等空白符中的随意一个。

.   :小数点能够匹配随意一个字符

正則表達式语法(3)

  • 自己定义字符集合:

[ ]方括号匹配方式。可以匹配方括号里随意一个字符

[[email protected]]: 匹配方括号里的随意一个字符

[^abc]: 匹配除了abc以外的随意一个字符

[f-k]: 匹配“f”-“k”之间的随意一个字符

[^A-F0-3]: 匹配非A-F和非0-3的随意一个字符

正則表達式语法(4)

  • 修饰匹配次数的特殊符号

{n}: 表达式反复n次

{m,n}: 表达式至少反复m次。最多反复n次

{m,}: 表达式至少反复m次

?: 匹配表达式0次或者1次。相当于{0,1}

+ : 表达式至少出现1次。相当于{1,}

*  : 表达式不出现或者出现随意次,相当于{0,}

匹配次数中的贪婪模式,(匹配字符愈多愈好。默认)

匹配次数中的非贪婪模式(匹配字符越少越好。修饰匹配次数的特殊符号后再加上一个“?“号)。样例:\d{2,4}?,这样就将模式改为非贪婪

正則表達式语法(5)

  • 字符边界(本组标记匹配的不是字符而是位置,符合某种条件的位置)

^: 与字符串開始的位置匹配(以一行来算)

$: 与字符串结束的地方匹配

\b: 匹配单词边界    //比方boy\b   则在boy右边不是边界的不匹配

在java中使用正則表達式及经常使用函数

public class TestRegex {
	public static void main(String []args)
	{
		//Pattern p = Pattern.compile("^\\d{4}");  //在java中的反斜杠要用两个前面一个转义,由于\d中的\做反义用
		Pattern p = Pattern.compile("(\\d{4})([a-z]{2})");
		Matcher m = p.matcher("asdfsadfsafd2342314asdfsadf2342asdfsaf");

		System.out.println(m.matches());		//匹配整个目标字符串
		System.out.println(m.find());			//查找字符串

		List<String> list = new ArrayList<String>();		//用来存储找到的group
		while(m.find())						//m.find()找到一个后就去找下一个了
		{
			System.out.println(m.group());		//group(),group(0)的作用是一样的
			System.out.println(m.group(0));
			System.out.println(m.group(1));
			System.out.println(m.group(2));		//假设写3的话会超出范围
			list.add(m.group());
		}

		String []str = "aa33fdf55cc".split("\\d{2}");		//依照两个整数来切分
		String str2 ="asd2dsfdfds".replaceAll("\\ds", "**");		//将ds替换掉,生成新的字符串。由于前面是常量不可变
		System.out.println("asdfsdf".matches("\\w+"));		//匹配字符串
	}
}
时间: 2024-08-04 00:57:58

正則表達式基础及java使用的相关文章

JavaScript正則表達式知识汇总

Js 正則表達式知识汇总 正則表達式: 1.什么是RegExp?RegExp是正則表達式的缩写.RegExp 对象用于规定在文本中检索的内容. 2.定义RegExp:var +变量名=new RegExp(); 3.RegExp 对象有 3 个方法: 1)test()检索字符串中的指定值,返回值是true或false. var p1=new Reg("e"); document.write(Reg.test("welcome to China!")); 2)exec

python进阶十_正則表達式(一)

近期状态一直不太好,至于原因.怎么说呢,不好说,总之就是纠结中覆盖着纠结.心思全然不在点上.希望能够借助Python的学习以及博客的撰写来调整回来,有的时候回头想一想.假设真的是我自己的问题呢,曾经我常常跟别人说,千万不要怀疑自己.由于非常清楚一旦连自己都变的不可信.那这个世界就太疯狂了,当一遍一遍的问我,如今连我自己都快怀疑自己了,我一遍一遍的说服别人,想不到如今居然须要自己去说服自己,何其的悲哀~ 一.正則表達式基础 1.基本概念 正則表達式是计算机科学的一个概念.正則表達式使用单个字符串来

Python——正則表達式(2)

本文译自官方文档:Regular Expression HOWTO 參考文章:Python--正則表達式(1) 全文下载 :Python正則表達式基础 ====================================================================================== 3.使用正則表達式 如今.我们已经学习了一些简单的正則表達式,但我们应该怎么在Python中使用它们呢?re模块提供了一个连接正則表達式引擎的接口,同意你将RE编译成对象并利

正則表達式学习參考

正則表達式学习參考 1       概述 正則表達式(Regular Expression)是一种匹配模式,描写叙述的是一串文本的特征. 正如自然语言中“高大”.“牢固”等词语抽象出来描写叙述事物特征一样,正則表達式就是字符的高度抽象,用来描写叙述字符串的特征. 正則表達式(下面简称正则,Regex)通常不独立存在,各种编程语言和工具作为宿主语言提供对正则的支持,并依据自身语言的特点,进行一定的剪裁或扩展. 正则入门非常easy,有限的语法规则非常easy掌握,可是眼下正则的普及率并不高,主要是

HDU-1039-Easier Done Than Said?(Java &amp;amp;&amp;amp; 没用正則表達式是我的遗憾.....)

Easier Done Than Said? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 9845    Accepted Submission(s): 4784 Problem Description Password security is a tricky thing. Users prefer simple password

Java正則表達式入门

众所周知,在程序开发中,难免会遇到须要匹配.查找.替换.推断字符串的情况发生,而这些情况有时又比較复杂,假设用纯编码方式解决,往往会浪费程序猿的时间及精力.因此,学习及使用正則表達式,便成了解决这一矛盾的主要手段. 大 家都知道,正則表達式是一种能够用于模式匹配和替换的规范,一个正則表達式就是由普通的字符(比如字符a到z)以及特殊字符(元字符)组成的文字模式,它 用以描写叙述在查找文字主体时待匹配的一个或多个字符串.正則表達式作为一个模板,将某个字符模式与所搜索的字符串进行匹配.  自从jdk1

Java正則表達式演示样例

import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexMatches { public static void main( String args[] ){ // 按指定模式在字符串查找 String line = "This order was placed for QT3000! OK? "; String pattern = "(.*)(\\d+)(.*)&qu

java正則表達式总结

近期用到的正則表達式 因为近期在做一个android的新闻client.多次用到了正則表達式.因此总结下. 1.使用正則表達式获取Rss资源内的文章内容的图片url 由于在每条新闻浏览的listView里须要新闻内容里的图片.因此你须要抓取文章第一张照片url地址.豆瓣的照片格式是: <img src="http://theimg.aliapp.com/img.php? url=http://img6.douban.com/view/presto/large/public/218991.j

java正則表達式 match、find匹配位置

如题.对于java正則表達式这几个方法匹配一次后的,匹配位置搞不太清楚,就写了几个样例.例如以下: String ss="ooaaoo"; Pattern pt=Pattern.compile("(o+)"); Matcher mt=pt.matcher(ss); // mt.lookingAt(); // mt.matches(); while(mt.find()){ System.out.println(mt.group(1)+"|||"+m