正则表达式基础及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+"));		//匹配字符串
	}
}

正则表达式基础及java使用

时间: 2024-10-08 22:58:04

正则表达式基础及java使用的相关文章

黑马程序员-正则表达式基础

正则表达式是一种描述字符串集的方法,它是以字符串集中各字符串的共有特征为依据的.正则表达式可以用于搜索.编辑或者是操作文本和数据.它超出了 Java 程序设计语言的标准语法,因此有必要去学习特定的语法来构建正则表达式.正则表达式的变化是复杂的,一旦你理解了它们是如何被构造的话,你就能解析或者构建任意的正则表达式了..正则表达式由一些普通字符和一些元字符组成. 普通字符包括大小写的字母和数字,而元字符则具有特殊的含义.在最简单的情况下,一个正则表达式看上去就是一个普通的查找串.例如,正则表达式"a

javascript之正则表达式基础知识小结

javascript之正则表达式基础知识小结,对于学习正则表达式的朋友是个不错的基础入门资料. 元字符 ^ $ . * + ? = ! : | \ / ( ) [ ] { } 在使用这些符号时需要用“\”来进行转移. 如果记不清楚那些标点符号需要转移,可以在使用标点符号时都使用反斜杠“\” 简单匹配 1.直接量 /javascript/ 匹配带有“javascript”的字符串 比如“javascript is an object-oriented scripting language” 2.[

前端学PHP之正则表达式基础语法

前面的话 正则表达式是用于描述字符排列和匹配模式的一种语法规则.它主要用于字符串的模式分割.匹配.查找及替换操作.在PHP中,正则表达式一般是由正规字符和一些特殊字符(类似于通配符)联合构成的一个文本模式的程序性描述.正则表达式有三个作用:1.匹配,也常常用于从字符串中析取信息:2.用新文本代替匹配文本:3.将一个字符串拆分为一组更小的信息块.本文将详细介绍PHP中的正则表达式基础语法 [注意]关于javascript的正则表达式的详细信息移步至此 历史 在PHP中有两套正则表达式函数库,两者功

刨根究底正则表达式之二——正则表达式基础

正则表达式基础 一.正则表达式构成 1. 正则表达式中的语法元素,从是否具有特殊含义的角度进行分类,可分为下列两大类.共五种语法元素: 1)不具有特殊含义的语法元素 (1)  字面字符(文本字符):不具有特殊含义的单个字符,代表字符自身(即字符字面值): (2)  普通转义序列:由转义前导符\后跟元字符所组成的字符序列,将具有特殊含义的元字符,转义为(即转换为)不具有特殊含义的字符本身(即字符字面值): 2)具有特殊含义的语法元素 (1)  元字符:具有特殊含义的单个字符,包括:\.(.).[.

HDFS基础和java api操作

1. 概括 适合一次写入多次查询情况,不支持并发写情况 通过hadoop shell 上传的文件存放在DataNode的block中,通过linux shell只能看见block,看不见文件(HDFS将客户端的大文件存放在很多节点的数据块中,Block本质上是一个逻辑概念,它是hdfs读写数据的基本单位) HDFS中,如果一个文件小于一个数据块的大小,并不占用整个数据块存储空间 2. fs 可以使用hdfs shell操作hdfs,常用 fs命令如下: eg: hadoop fs -cat fi

五本书籍助你从零基础学习java编程到精通之路

前天的文章给大家介绍了Java初学者应该学习哪些基础,亦是美网络小编从Java的三个大方向:J2SE.J2EE.J2ME对大家做了前景分析,这两天也收到了大家的很多反馈,很多小伙伴看了后对自己的Java编程方向有了比较明确的目标,也有小伙伴们说,要是能提供一些Java初学者应看的书籍就更好了,其实推荐Java书籍已经被规划在小编写的Java编程系列文章之中,常言道:书中自有黄金屋,书中自有颜如玉,下面亦是美网络小编给大家推荐的Java书籍中虽然没有黄金屋和颜如玉,但却能让Java编程的初学者快速

【java基础】Java反射机制

一.预先需要掌握的知识(java虚拟机)  1)java虚拟机的方法区:  java虚拟机有一个运行时数据区,这个数据区又被分为方法区,堆区和栈区,我们这里需要了解的主要是方法区.方法区的主要作用是存储被装载的类 的类型信息,当java虚拟机装载某个类型的时候,需要类装载器定位相应的class文件,然后将其读入到java虚拟机中,紧接着虚拟机提取class 中的类型信息,将这些信息存储到方法区中.这些信息主要包括: 这个类型的全限定名 这个类型的直接超类的全限定名 这个类型是类类型还是接口类型

编程基础知识——Java JNI开发流程(2)

android中使用jni调用本地C++库 android平台上的本地库文件后缀 .so.类似windows上的dll文件. 要在android上使用jni,首先需要下载android ndk. 操作步骤,正常建立android工程,然后在android工程那里右键,属性,选择Android Tools -> Add Native Support.就可以为android工程增加本地库支持. 添加支持后的android工程,会增加jni目录,C++代码就写在这个目录里. 新建一个类,并且使用nat

编程基础知识——java类加载

java类加载 先来看一段小程序: package com; public class Main1 { static { System.out.println("1111") ; } public static void main(String[] args) { System.out.println("2222") ; } } 输出结果为: 1111 2222 其中static的执行时机就是class被 classloader加载的时候执行. 这有什么用?看下面代