分组(groups)
字符
|
说明
|
(X)
|
将(X)作为一个单元进行匹配
|
\n
|
与第n个分组的匹配
|
(X) 作为一个组合单元,比如,要查询<a href=\"index.html\">index</a>中<a href></a>间的数据,可写作<a.*href=\".*\">(.+?)</a>
可以使用分组来定义子表达式,将分组封装在()中,如([+-]?)([0-9]+)。然后你可以让模式匹配符(the pattern matcher)返回每个分组的匹配,或者使用\n来回引分组(refer back to a group with \n),其中n是组号,group 0 表示整个表达式,group 1表示第一个被括起来的group,以此类推。所以A(B(C))D 里面有三个group:group 0是ABCD,group 1是BC,group 2是C。
例如,给定模式((1?[0-9]):([0-5][0-9]))[ap]m,并且输入11:59am,Matcher对象报告下列分组如下:
分组索引
|
起始
|
结束
|
字符串
|
0
|
0
|
7
|
11:59am
|
1
|
0
|
5
|
11:59
|
2
|
0
|
2
|
11
|
3
|
3
|
5
|
59
|
又如:要从格式为“June 26, 1951”中提取出月份部分june,用来匹配的正则表达式可以是:[a-zA-Z]+\s+[0-9]{1,2},\s*[0-9]{4},接下来如何提取出june部分呢?只需加上一个圆括号创建一个组,然后用\1提取出它的值,如下:
([a-zA-Z]+)\s+[0-9]{1,2},\s*[0-9]{4}
示例
验证是否为邮箱地址
Pattern pattern = Pattern.compile("[*\\w\\.\\-]+@([\\w\\-]+\\.)+[\\w\\-]+",
Pattern.CASE_INSENSITIVE);
去除html标记
Pattern pattern = Pattern.compile("<.+?>", Pattern.DOTALL);
Matcher matcher = pattern.matcher("<a href=\"index.html\">主页</a>");
String string = matcher.replaceAll("");
查找html中链接字符串
Pattern pattern = Pattern.compile("href=\"(.+?)\"");
截取http://地址
Pattern pattern = Pattern.compile("(http://|https://){1}[\\w\\.\\-/:]+");
匹配<title>XXX</title>中的内容
Pattern p = Pattern.compile("<title>([^<]*)</title>");//匹配<title>开头,</title>结尾的文档
Matcher m = p.matcher(html );//开始编译,html 为要匹配的文本
while (m.find())
{
list.add(m.group(1));//获取被匹配的部分
}
从下列格式的日志中提取IP和时间
192.168.16.233 --- [26/Feb/2004:10:10:03 -0500]
“get /index.html http/1.0” 200 15
IP部分:\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}
日志部分:\[[^]]+\],说明:\[匹配开始[符号,[^]]+匹配]之前的所有字符,\]匹配结束]符号。
现在,把上述两个正则表达式加上分组符号(圆括号)后合并成单个表达式,这样就可以从日志记录提取出IP地址和时间。注意,为了匹配“- -”(但不提取它),正则表达式中间加入了“ \s?\-\-\-\s?”。完整的正则表达式为:
(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\s?\-\-\-\s?(\[[^]]+\])
Eclipse中Html替换
要将.html中所有如下格式的字符串:
<input type="text" value="${remark}">
替换成如下的格式:
<input type="text" value="${remark}" name="remark">
也就是添加一个name=""的字符串,“”中的内容跟${}中的内容是一样的。
方法:使用eclipse的find/replace操作中使用正则表达式。
Find: value=\".*\$\{(.*)\}\"
Replace: value=\"\$\{\1\}\" name=\"\1\"
替换“”中的内容
要把如下文件中的“”中的内容替换掉。
<FApieceAmt java-class="java.lang.Double">1.0</FApieceAmt>
<FApieceClmDay java-class="java.lang.Integer">2</FApieceClmDay>
<FBasicPrm java-class="java.lang.Double">3.0</FBasicPrm>
<FNclmAmt java-class="java.lang.Double">4.0</FNclmAmt>
<FNrdrPrmVar java-class="java.lang.Double">5.0</FNrdrPrmVar>
答案:
Pattern p=Pattern.compile(" java-class=([^>]+)>");
//[^>]+匹配>之前的所有字符。
Html链接替换2
要将.htm文件中所有如<a href=”*http://www.myweb.com/index.html”> </a>中的 *http://www.myweb.com替换成http://www.sina.comc.cn.
匹配:<\s*a \s+ href\s*=\s*”* http://www.myweb.com/([^”]+)”>
替换:<a href=”*http://www.sina.com.cn/(\1)”>
说明:通过\1来取得()中的内容。
处理方法同Eclipse中Html替换.
Html<font>元素解析
分析HTML页面内FONT标记的所有属性。例如FONT标记如下所示:
<font face="Arial,serif" size="+2" color="red" >
程序将按照如下形式,输出每一个FONT标记的属性:
face=Arial,serif
size=+2
color=red
答案:
1.先从<font>中提取属性值,如:face="Arial,serif" size="+2" color="red"
匹配:<\s*font\s*([^>]*)\s*>,通过\1取得匹配值。
2.将提取字符串分解成键值对,使用如下正则表达式:
匹配:([a-z]+)\s*=\s*"([^"]+)",通过\1取得键,\2取得值。
lxm整理,只为知识共享之用,所有内容均来自网络,内容归所有者。
2009.04.16
分享到:
相关推荐
本文写作时,一个包含了用正则表达式进行文本处理的Java规范需求(Specification Request)已经得到认可,你可以期待在JDK的下一版本中看到它。 然而,如果现在就需要使用正则表达式,又该怎么办呢?你可以从Apache...
Java正则表达式Java正则表达式Java正则表达式Java正则表达式
java,正则表达式,详解,java正则表达式,PDF
Java正则表达式 Java 正则表达式 图片版 携带方便,查阅方便!~
正则表达式之道.doc 正则表达式中的特殊字符.doc Java正则表达式详解.doc 正则表达式.ppt JAVA正则表达式--Pattern和Matcher.doc 例子
JAVA正则表达式应用:任意输入一串字符串 如何输入exit退出程序;从输入的字符串中判断是否包含手机号码 正则表达式可以使用" +86| 86 1 d{10}" 如果包含请将其在控制台打印出来 否则输出不包含字符串 ...
java正则表达式详解java正则表达式详解java正则表达式详解java正则表达式详解java正则表达式详解java正则表达式详解java正则表达式详解
java正则表达式验证IP地址
java使用正则表达式进行校验验证,主要使用了Pattern和Matcher类,直接main方法运行就可以,亲测有效
java正则表达式.pdfjava正则表达式.pdfjava正则表达式.pdfjava正则表达式.pdfjava正则表达式.pdf
Java正则表达式介绍和练习Java正则表达式介绍和练习Java正则表达式介绍和练习
Java正则表达式应用总结
java正则表达式 过滤特殊字符的正则表达式
Jva正则表达式Jva正则表达式Jva正则表达式Jva正则表达式Jva正则表达式
正则表达式的使用 java正则表达式的使用示例 java正则表达式
java正则表达式使用例子,代码是Android的
在学习完该教程后,应该对正则表达式有了初步的了解,并能熟练地运用 java.util.regex 包中的关于正则表达式的类库,为今后学习更高级的正则表达式技术奠定良好的基础。 教程中所有的源代码都在 src 目录下,可以...
正则表达式匹配工具很好很强大 放心使用 内附各种经典正则匹配公式
Java正则表达式详解.pdf Java正则表达式详解.pdf
java 验证手机号码 身份证 email url 以及其他常用的正则表达式的验证方法。