正则表达式
来源:互联网 发布:15年股灾真相知乎 编辑:程序博客网 时间:2024/06/05 15:12
正则表达式
一、字符解释
1、^为限制开头
^java :条件限制为 java 为开头的字符。
2、$为限制结尾
java$ :条件限制为以 java 为结尾符。
3、 \
将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如,“\\n”匹配\n。“\n”匹配换行符。序列“\\”匹配“\”而“\(”则匹配“(”。
4、?
匹配前面的子表达式零次或一次。例如,“do(es)?”可以匹配“does”或“does”中的“do”。?等价于{0,1}。
5、*
匹配前面的子表达式零次或多次(大于等于0次)。例如,zo*能匹配“z”,“zo”以及“zoo”。*等价于{0,}。
6、+
匹配前面的子表达式一次或多次(大于等于1次)。例如,“zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等价于{1,}。
7、{n}
n是一个非负整数。匹配确定的n次。例如,“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的两个o。
8、点.
匹配除“\r\n”之外的任何单个字符。要匹配包括“\r\n”在内的任何字符,请使用像“[\s\S]”的模式。
9、x|y
匹配x或y。例如,“z|food”能匹配“z”或“food”。“(z|f)ood”则匹配“zood”或“food”。
10、[^abc]
负值字符集合。匹配未包含的任意字符。例如,“[^abc]”可以匹配“plain”中的“plin”。
11、[a-z]
字符范围。匹配指定范围内的任意字符。例如,“[a-z]”可以匹配“a”到“z”范围内的任意小写字母字符。
12、\b
能匹配一个单词的边界,例如 er\b 能匹配到nerver的er ,但不能匹配“verb”中的“er”。13、\B
匹配非单词边界。“er\B”能匹配“verb”中的“er”,但不能匹配“never”中的“er”。
14、\d
匹配一个数字字符,相当于[0-9]
15、\D
匹配一个非数字字符,相当于[^0-9]
16、\w
匹配包括下划线的任何单词字符。等价于“[A-Za-z0-9_]”。
17、\W
匹配任何非单词字符。等价于“[^A-Za-z0-9_]
18、|
将两个匹配条件进行逻辑“或”(Or)运算。例如正则表达式(him|her) 匹配"it belongs to him"和"it belongs to her",但是不能匹配"it belongs to them."。注意:这个元字符不是所有的软件都支持的。
19、\( \)
将 \( 和 \) 之间的表达式定义为“组”(group),并且将匹配这个表达式的字符保存到一个临时区域(一个正则表达式中最多可以保存9个),它们可以用 \1 到\9 的符号来引用。
20、\s
匹配任何空白字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。
21、\S
22、\f
匹配一个换页符。
23、\n
匹配一个换行符
24、\r
匹配一个回车符
◆ 比如,在字符串包含验证时// 查找以 Java 开头 , 任意结尾的字符串 Pattern pattern = Pattern.compile("^Java.*"); Matcher matcher = pattern.matcher("Java 不是人 "); boolean b= matcher.matches(); // 当条件满足时,将返回 true ,否则返回 false System.out.println(b);◆ 以多条件分割字符串时Pattern pattern = Pattern.compile("[, |]+");String[] strs = pattern.split("Java Hello World Java,Hello,,World|Sun");for (int i=0;i<strs.length;i++) { System.out.println(strs[i]);}◆ 文字替换(首次出现字符)Pattern pattern = Pattern.compile(" 正则表达式 ");Matcher matcher = pattern.matcher(" 正则表达式 Hello World, 正则表达式 Hello World");// 替换第一个符合正则的数据System.out.println(matcher.replaceFirst("Java"));◆ 文字替换(全部)Pattern pattern = Pattern.compile(" 正则表达式 ");Matcher matcher = pattern.matcher(" 正则表达式 Hello World, 正则表达式 Hello World");// 替换第一个符合正则的数据System.out.println(matcher.replaceAll("Java"));◆ 文字替换(置换字符)Pattern pattern = Pattern.compile(" 正则表达式 ");Matcher matcher = pattern.matcher(" 正则表达式 Hello World, 正则表达式 Hello World ");StringBuffer sbr = new StringBuffer();while (matcher.find()) { matcher.appendReplacement(sbr, "Java");}matcher.appendTail(sbr);System.out.println(sbr.toString());◆ 验证是否为邮箱地址String str="ceponline@yahoo.com.cn";Pattern pattern = Pattern.compile("[\\w\\.\\-]+@([\\w\\-]+\\.)+[\\w\\-]+",Pattern.CASE_INSENSITIVE);Matcher matcher = pattern.matcher(str);System.out.println(matcher.matches());◆ 去除 html 标记Pattern pattern = Pattern.compile("<.+?>", Pattern.DOTALL);Matcher matcher = pattern.matcher("<a href=\"index.html\"> 主页 </a>");String string = matcher.replaceAll("");System.out.println(string);◆ 查找 html 中对应条件字符串Pattern pattern = Pattern.compile("href=\"(.+?)\"");Matcher matcher = pattern.matcher("<a href=\"index.html\"> 主页 </a>");if(matcher.find()) System.out.println(matcher.group(1));}◆ 截取 http:// 地址// 截取 urlPattern pattern = Pattern.compile("(http://|https://){1}[\\w\\.\\-/:]+");Matcher matcher = pattern.matcher("dsdsds<http://dsds//gfgffdfd>fdf");StringBuffer buffer = new StringBuffer();while(matcher.find()){ buffer.append(matcher.group()); buffer.append("\r\n"); System.out.println(buffer.toString());} ◆ 替换指定 {} 中文字String str = "Java 目前的发展史是由 {0} 年 -{1} 年 ";String[][] object={new String[]{"\\{0\\}","1995"},new String[]{"\\{1\\}","2007"}};System.out.println(replace(str,object));public static String replace(final String sourceString,Object[] object) { String temp=sourceString; for(int i=0;i<object.length;i++){ String[] result=(String[])object[i]; Pattern pattern = Pattern.compile(result[0]); Matcher matcher = pattern.matcher(temp); temp=matcher.replaceAll(result[1]); } return temp;}◆ 以正则条件查询指定目录下文件 // 用于缓存文件列表 private ArrayList files = new ArrayList(); // 用于承载文件路径 private String _path; // 用于承载未合并的正则公式 private String _regexp; class MyFileFilter implements FileFilter { /** * 匹配文件名称 */ public boolean accept(File file) { try { Pattern pattern = Pattern.compile(_regexp); Matcher match = pattern.matcher(file.getName()); return match.matches(); } catch (Exception e) { return true; } } } /** * 解析输入流 * @param inpu/* 主要是为了能找出在一次匹配中你更关心的部分。 * 捕获组可以通过从左到右计算其开括号来编号。例如,在表达式 "(x)(y\\w*)(z)" 中,存在三个这样的组: 1. x2. y\\w*3. z*/ //m.group(2) return y123 y456 //m.group() return xy123z xy456z @Test public void test3(){ String regex = "(x)(y\\w*)(z)"; String input = "exy123z,xy456z"; Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE); Matcher m = p.matcher(input); while (m.find()) {// System.out.println(m.group(2));// System.out.println(m.groupCount()); System.out.println(m.group()); } }
- 【正则表达式】正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- Dubbo架构介绍
- Storyboard里面的几种Segue区别:push,modal,popover,replace和custom
- Disruptor一个开源的高效内存无锁队列
- MySQL执行计划解读
- 完全二叉树根据节点个数求叶子个数
- 正则表达式
- 北大dean的session
- iOS天气预报模块总结
- sqoop向hdfs,hive,hbase导入数据
- OpenCV c接口与c++接口
- Combinations
- mysql获取一个表格的所有字段
- Python的threading模块
- 【线程】Java线程(2)-线程安全概述