- 浏览: 417346 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
kaihop:
很好,值得学习
Axis2开发WebService客户端 的3种方式 -
白天看黑夜:
java过滤emoji字符处理,希望能帮到你http://ww ...
Java解决Emoji表情符问题 -
hongbai:
不能匹配这个:http://harveyzeng.iteye. ...
正则表达式匹配域名、网址、url -
qwertyuiopqaz:
引用
Axis2开发WebService客户端 的3种方式 -
whj001:
很详细 ,
Axis2开发WebService客户端 的3种方式
维基百科:http://zh.wikipedia.org/wiki/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F
在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就 是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。
元字符:
. | 匹配除换行符以外的任意字符 |
\w | 匹配字母或数字或下划线或汉字 |
\s | 匹配任意的空白符 |
\d | 匹配数字 |
\b | 匹配单词的开始或结束 |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结束 |
字符转义
如果你想查找元字符本身的话,比如你查找.,或者*, 就出现了问题:你没办法指定它们,因为它们会被解释成别的意思。这时你就得使用\来取消这些字符的 特殊意义。因此,你应该使用\.和\*。 当然,要查找\本身,你也得用\\
如何重复
* | 重复零次或更多次 |
+ | 重复一次或更多次 |
? | 重复零次或一次 |
{n} | 重复n次 |
{n,} | 重复n次或更多次 |
{n,m} | 重复n到m次 |
下面是一些使用重复的例子:
Windows\d+匹配Windows 后面跟1个或更多数字
如何创建IF条件:
\d{5}-\d{4}|\d{5}这个表达式用于匹配美国的邮政编码。美国邮编 的规则是5位数字,或者用连字号间隔的9位数字。
如何分组?
可以用小括号来指定子表达式(也叫做分组), 然后你就可以指定这个子表达 式的重复次数了,你也可以对子表达式进行其它一些操作(后面会有介绍)。
(\d{1,3}\.){3}\d{1,3}是一个简单的IP地址匹配表达式。要理解这个表达式,请按下列顺序分析它:\d{1,3}匹 配1到3位的数字,(\d{1,3}\.){3}匹 配三位数字加上一个英文句号(这个整体也就是这个分组)重 复3次,最后再加上一个一到三位的数字(\d{1,3})。
如何!非语句?
\W | 匹配任意不是字母,数字,下划线,汉字的字符 |
\S | 匹配任意不是空白符的字符 |
\D | 匹配任意非数字的字符 |
\B | 匹配不是单词开头或结束的位置 |
[^x] | 匹配除了x以外的任意字符 |
[^aeiou] | 匹配除了aeiou这几个字母以外的任意字符 |
如何后向引用?
使用小括号指定一个子表达式后,匹配这个子表达式的文本 (也就是此分组捕获的内容)可以在表达式或其它 程序中作进一步的处理。默认情况下,每个分组会自动拥有一个组号,规则是:从左向右,以分组的左括 号为标志,第一个出现的分组的组号为1,第二个为2,以此类推。
后向引用用于重复搜索前面某个分组匹配的文本。例如,\1代表分组1匹配的文本。难以理解?请看示例:
\b(\w+)\b\s+\1\b可以用来匹配重复的单词,像go go, 或者kitty kitty。这个表达式首先是一个单词, 也就是单词开始处和结束处之间的多于一个的字母或数字(\b(\w+)\b), 这个单词会被捕获到编号为1的分组中,然后是1个或几个空白符(\s+),最后是分组1中捕获的内容(也就是前面匹配的那个单词)(\1)。
你也可以自己指定子表达式的组名。要指定一个子表达式的组名,请使用这样的语法:(?<Word>\w+)(或者把尖括号换成’也 行:(?’Word’\w+)),这样就把\w+的 组名指定为Word了。要反向引用这个分组捕获的 内容,你可以使用\k<Word>,所以上一个例子也可以写成这样:\b(?<Word>\w+)\b\s+ \k<Word>\b。
使用小括号的时候,还有很多特定用途的语法。下面列出了最常用的一些:
(exp) | 匹配exp,并捕获文本到自动命名的组里 |
(?<name>exp) | 匹配exp,并捕获文本到名称为name的组里,也可以写成 (?’name’exp) |
(?:exp) | 匹配exp,不捕获匹配的文本,也不给此分组分配组号 |
(?=exp) | 匹配exp前面的位置 |
(?<=exp) | 匹配exp后面的位置 |
(?!exp) | 匹配后面跟的不是exp的位置 |
(?<!exp) | 匹配前面不是exp的位置 |
(?#comment) | 这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅 读 |
如何防止无限匹配和提供匹配速度
当正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多 的 字符。
*? | 重复任意次,但尽可能少重复 |
+? | 重复1次或更多次,但尽可能少重复 |
?? | 重复0次或1次,但尽可能少重复 |
{n,m}? | 重复n到m次,但尽可能少重复 |
{n,}? |
重复n次以上,但尽可能少重复 |
举例:
检查变量名定义是否合法的正则表达式:[A-Za-z_][A-Za-z0-9_]*
1. Flex中使用
private function validateName(name:String):void { var reValidator : RegExpValidator = new RegExpValidator(); reValidator.expression = "^[A-Za-z_][A-Za-z0-9_]*$"; reValidator.noMatchError = "wrong"; var resultEvent : ValidationResultEvent = reValidator.validate(name, true); if (resultEvent.type == ValidationResultEvent.INVALID) { Alert.show(resultEvent.message); } else { Alert.show("right"); } }
2. Java中使用
public static void main(String[] args) { String regex = "[A-Za-z_][A-Za-z0-9_]*"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher("_hello2012WORLD"); if (matcher.find()) { System.out.println(matcher.group(0)); } if (matcher.matches()) { System.out.println("right..."); } else { System.out.println("wrong..."); } }
发表评论
-
Spring 定时任务及cron表达式
2017-03-16 10:22 4140转发一篇文章并结合实践记录一下,以后可以参考 Ja ... -
mybatis-generator生成mapper等对象
2017-03-15 15:34 2214参考这篇问题基本就能生成了:http://blog. ... -
Java解决Emoji表情符问题
2016-01-28 17:29 22205问题描述:客户调用 ... -
mybatis 模糊查询%问题
2015-09-28 18:52 4300---------------------------- ... -
常见异常备忘
2015-09-23 17:59 5121. jQuery上传插件Uploadify出现Ht ... -
省市区三级联动实现
2015-06-02 18:11 2255参考文档: 从QQ网站中提取的纯JS省市区三级联动 h ... -
面试题记录4
2015-03-10 18:19 6371. 类加载的顺序(初始化顺序) 类加载的顺 ... -
理解Java移位操作
2014-11-06 12:26 7971. 理解移位操作之前先 ... -
一个排好序的数组,找出两数之和为m的所有组合
2014-09-25 16:20 1211public class Test { ... -
Java String知识点
2014-09-19 11:01 9121. 这段程序的结果是什 ... -
用JAVA导出CSV
2014-07-08 14:00 1286/** * 导出为CVS文件 * ... -
Java面试问题
2014-04-17 17:37 848JAVA 接口和抽象类有 ... -
Java动态执行代码Bsh
2014-02-28 17:42 11344首先要到http://www.beanshell.or ... -
Hibernate错误:org.hibernate.LazyInitializationException: illegal access to loading
2013-09-16 19:16 1445org.hibernate.LazyInitializ ... -
Axis2开发WebService客户端 的3种方式
2013-04-18 18:05 79778第一RPC方式,不生成客户端代码 第二,document ... -
freemarker用字符串构建模版
2013-04-15 16:14 1160代码: import java.io.IOExcep ... -
Java基本类型、包装类以及自定义类判断
2013-02-18 17:48 9250一、基本类型与包装类判断 public class Te ... -
正则表达式匹配域名、网址、url
2013-01-28 18:02 33689DNS规定,域名中的标号都由英文字母和数字组成,每一 ... -
正则表达式基础之——环视 [转]
2013-01-25 09:35 1237环视(Lookaround) 1 环视 ... -
通过反射实现map和bean之间的转换
2012-12-21 09:25 1823直接看代码: public class Convert ...
相关推荐
正则表达式是一种强大的文本处理工具,用于在字符串中...而这份"正则表达式入门与提高---整理版"文档将是你学习正则表达式的好帮手,它涵盖了基础概念、常用模式以及实例解析,是深入理解和运用正则表达式的好资源。
本资源"正则表达式入门经典"是由(美)瓦特编著的扫描版,旨在帮助初学者快速掌握这一技术。 正则表达式的基本概念: 1. **元字符**:如`.`, `*`, `+`, `?`, `{}`, `[]`, `\`, `^`, `$`等,它们具有特殊含义,用来...
正则表达式是一种强大的文本处理工具,用于匹配、查找、替换和提取字符串模式。它在各种编程语言和脚本环境...在"正则表达式入门与提高.doc"文档中,你将找到更多实例和详细解释,帮助你深入理解并熟练运用正则表达式。
正则表达式入门经典.(美)瓦特.扫描版.pdf 经典书籍
《正则表达式入门经典》由美国作家Andrew Watt所著,这本书为初学者提供了全面而详细的正则表达式知识,通过书签版的设置,方便读者快速定位和复习关键概念。 正则表达式的基本结构包括字符、元字符和量词。字符是...
本资源“正则表达式入门经典”是一本旨在帮助初学者掌握这一强大工具的书籍,通过学习,你可以更好地理解和运用正则表达式。 在编程和数据处理领域,正则表达式扮演着至关重要的角色。它是一种特殊的字符序列,可以...
在"正则表达式入门.doc"文档中,你将学习到正则表达式的基础知识,包括基本元字符、修饰符、预定义字符类以及更高级的构造。 1. **基本元字符**:正则表达式中最基础的是元字符,它们具有特殊含义,如`.`代表任意...
"正则表达式入门30分钟"这个教程可能是为了快速介绍正则表达式的基本概念和常用语法,帮助初学者快速掌握这一强大的工具。下面是一些正则表达式的核心概念和常见用法: 1. **基础元素**: - **字符匹配**:例如,`...
这篇入门笔记实例将带你深入了解正则表达式的使用。 1. **正则表达式基础** - **模式定义**:正则表达式由特殊字符(元字符)和普通字符组成,用于描述文本模式。 - **创建方式**:可以使用`/pattern/flags`或`...
正则表达式是一种特殊的文本模式,用于在字符串中查找和匹配符合特定规则的子串。它是文本处理不可或缺的工具之一,广泛应用于编程语言、文本编辑器、搜索引擎以及各种编程和脚本语言中。正则表达式的能力远超简单的...
这两本入门教程,"正则表达式教程.chm" 和 "正则表达式入门教程.doc",将帮助初学者快速掌握这一技术。 首先,我们来看"正则表达式教程.chm"可能涵盖的内容。CHM是Microsoft的 Compiled HTML Help 文件,通常包含一...
正则表达式(Regular Expression)是一种强大的文本处理工具,它是一种模式匹配语言,用于在文本中查找、替换或提取符合特定规则的字符串。在多种编程语言中,如Perl、Java、JavaScript、C#、PHP、Python、Ruby、Tcl、...
正则表达式语法,句例,口诀,使用详解,教程等等内容
正物色一本学习正则表达式的入门图书?恭喜,《学习正则表达式》非常适合你!本书提供大量经典简洁的示例,从零开始教你逐步掌握正则表达式。通过匹配特定单词、字符和模式,读者很快就可以自己动手使用正则表达式...
正则表达式入门教程——正则表达式30分钟入门教程.mht 正则表达式入门教程——正则表达式30分钟入门教程.mht 正则表达式入门教程——正则表达式30分钟入门教程.mht