java正則表達式的坑
java中正則表達式比較有意思,这里列举几个常见的坑
1.[]符号,中括号表示当中的数据都是或的关系
假设[\\w+]是匹配条件 abc能否够匹配的到呢?
首先\\w(注意这里没有中括号)表示a-z A-Z 0-9 _多个字符组合,显然abc随意一个在里面的,后又有+号。表示有多个字符,所以abc能够匹配\\w+
可是[\\w+]表示的意思是多个字符的或,注意是或。所以[\\w+]等同于[a-z|A-Z|0-9|_],这里面的或仅仅有单个字符
所以a或者b或者c都能够匹配[\\w+],可是abc不能够,怎样让abc能够匹配呢非常easy仅仅须要将条件外面加上+号标识多个字符就能够了。
2.转义符号
java转义非常麻烦各种\\,须要细致理解
java中\是没有意义的,在字符串中你出现一个\,编译器会告诉你是错误的,不能这样
所以java中\\表示一个\。在正則表達式匹配中如匹配数字写的是\\d事实上是\\表示一个\最后的效果是\d.
这个时候有人要问了,我仅仅要匹配\d这个字符而不是匹配数字怎么办。这个时候须要在加一个转义符。告诉大家这个字符不是\d表示的数字,而是详细字符串\d,详细的结果是非常蛋疼的在加上一个转义字符\\。所以会出现\\\\d,java会解析成\\d,表示对\d在做转义,就是单纯的\d。
再比方[\\]这个简单的表达式,假设你去调用则会报错。为什么?
由于java会觉得你仅仅传了一个转义符。而单独的转义符是没有意义的。假设你要匹配\号,须要的表达式是\\\\前面的\\表示转义符号,后面的\\表示真正匹配的\号。- -!
java转义字符关键是两个\\表示一个\。会让人费解。须要注意。
java正則表達式的坑的更多相关文章
- Java正則表達式入门
众所周知,在程序开发中,难免会遇到须要匹配.查找.替换.推断字符串的情况发生,而这些情况有时又比較复杂,假设用纯编码方式解决,往往会浪费程序猿的时间及精力.因此,学习及使用正則表達式,便成了解决这一 ...
- Java正則表達式语法
Java正則表達式语法 字符 说明 \ 将下一字符标记为特殊字符.文本.反向引用或八进制转义符.比如,"n"匹配字符"n"."\n"匹配换行 ...
- java正則表達式 match、find匹配位置
如题.对于java正則表達式这几个方法匹配一次后的,匹配位置搞不太清楚,就写了几个样例.例如以下: String ss="ooaaoo"; Pattern pt=Pattern.c ...
- java正則表達式总结
近期用到的正則表達式 因为近期在做一个android的新闻client.多次用到了正則表達式.因此总结下. 1.使用正則表達式获取Rss资源内的文章内容的图片url 由于在每条新闻浏览的listVie ...
- Java正則表達式
近期工作中常常要用到正則表達式,不得不花点时间对其进行一定的学习. JDK中提供了2个类来支持正則表達式,各自是java.util.regex.Pattern和java.util.regex.Ma ...
- Java正則表達式演示样例
import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexMatches { public s ...
- JAVA正則表達式小总结
近期项目中正在做后台校验,而后台校验也基本都是使用正則表達式校验.本文做一些粗略的总结. 1.字符串长度:.{1,10},注意有一个点在{}前,表示匹配全部.'{}'之前一定是一个捕获组,因此假设有其 ...
- 【开卷故意】JAVA正則表達式模版
专业既然是机器学习.那工作肯定也是继续和数据打交道,那么问题来了,非常多时候推荐算法和数据挖掘算法都是现成可用的,平台初建,重点还在数据过滤和抽取.如何高效的抽取数据? 利用往常算法比赛中经常使用的字 ...
- JAVA中正則表達式总结
昨天,我的朋友请教我正則表達式.我也好久没有写过正則表達式了,昨天刚好看了下如鹏网创始人杨中科老师关于正則表達式的解说.使我加深了正則表達式的印像.现我把他总结下: 很多语言,包含Perl.PHP.P ...
随机推荐
- cuzysdk购物模块 36kr+本期背景图
说好的剧透,虽然来的稍微晚不少 cuzysdk(www.cuzy.com) 是一个手机淘宝客sdk,通过使用cuzy,可以获取taobao平台的推广商品数据,移动开发者把推广的商品数据呈现给用户,用户 ...
- 2014 Multi-University Training Contest 1 — D. Task
题目链接:pid=4864">http://acm.hdu.edu.cn/showproblem.php?pid=4864 题目大意: 有N个机器.M个任务. 当中每一个机器有xi,y ...
- TMsgThread, TCommThread -- 在delphi线程中实现消息循环(105篇博客,好多研究消息的文章)
在delphi线程中实现消息循环 在delphi线程中实现消息循环 Delphi的TThread类使用很方便,但是有时候我们需要在线程类中使用消息循环,delphi没有提供. 花了两天的事件研究了 ...
- 【Demo 0001】Java基础-数据类型
本章学习要点: 1. 了解Java 语言 2. 了解Java程序结构; 3. 了解Java中基本数据类型; 4. 掌握基本数据类型之间的运算 ...
- 【Demo 0009】表视图控制器
本章学习要点: 1. 掌握表视图控制器结构; 2. 掌握表视图控制器的基本使用; 3. 掌握表视图表格的基本使用: 4. 掌握自定义表视图表格及 ...
- hdu 4706 Children's Day 2013年ICPC热身赛A题 模拟
题意:按字母顺序排列成n型,简单的模拟题. 当字母排到z时从a开始重新排起. 代码: /* * Author: illuz <iilluzen[at]gmail.com> * Blog: ...
- c#indexof使用方法
IndexOf() 查找字串中指定字符或字串首次出现的位置,返首索引值,如: str1.IndexOf("字"): //查找"字"在str1中的索引值(位置) ...
- Swift - 使用UIView给页面添加4×4方格
1,下面是一个利用UIView来给页面上绘制灰色方块的例子,效果图如下: 代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ...
- iOS高效开源类库
因为iOS SDK相对比较底层,所以开发者就得受累多做一些体力活.不过幸运的是,有很多第三方的类库可以用来简化很多不必要的工作.笔者整理了一下在本人学习过程中用到的一些比较有用Objective-C开 ...
- 与内存有关的那些事儿(数组分配空间不够,导致缓冲区溢出,从而strcpy会出现异常)
这日,我写下如下代码:#include <iostream>int main(void){ char *p = new char[5]; char *t = new char[5]; st ...