正则表达式以及正则表达式在字符串的替换、切割、获取中的应用
正则:正,乃合于法则也;则,规则也。正则,正规,常规是也。
元字符:
Java中正则表达式含有一些具有特殊意义字符的字符串,这些字符成为正则表达式的元字符。
例如:\\dcat中的\\d就是有特殊意义的元字符,代表了0~9中的任意一个数字。
下表列出了部分常用元字符及其意义:
元字符 | 在正则表达式中的写法 | 意义 |
. | . | 代表任何一个字符 |
\d | \\d | 代表0~9任意一个数字 |
\D | \\D | 代表任何一个非数字字符 |
\s | \\s | 代表空格类字符,'\t','\n‘,'\x0B','\f','\r' |
\S | \\S | 代表非空格类字符 |
\w | \\w | 代表可用于标识符的字符(不包括美元符号) |
\W | \\W | 代表不能用于标识符的字符 |
正则表达式中:“[ ]”括起若干字符=>表示一个元字符,该元字符代表“[ ]”中的任何一个字符。
例如:regex = “[159]ABC”;表示"1ABC”、"5ABC”、"9ABC”都是和正则表达式regex匹配的字符串。
限定修饰符:
常用限定修饰符用法如下表:
带限定修饰符的模式 | 意义 |
X? | X出现0次或1次 |
X* | X出现0次或多次 |
X+ | X出现1次或多次 |
X{n} | X恰好出现n次 |
X{n,} | X至少出现n次 |
X{n,m} | X出现n次至m次 |
XY | X的后缀是Y |
X|Y | X或Y |
以下代码是判断给定字符串是否全由英文字母所组成:
package sj.RegularExpression_v01;/*** 判断给定字符串是否全由英文字母组成* @author Songjie_xuan**/
public class Judge_Letter {public static void main(String[] args) {String str1 = "afadfhadfjoadsjfad";String str2 = "afadsfasdf;adfasd ;";// 定义正则表达式String regex = "[a-zA-Z]+";test(str1,regex);test(str2,regex);}private static void test(String str, String regex) {if(str.matches(regex)) {System.out.println(str+"都是由英文字符组成的");} elseSystem.out.println(str+"不都是由英文字符组成的");}
}
测试结果如下:
到此,大致上了解了正则表达式,那么正则表达式到底有什么用呢?下面就做一些简单的介绍:
1.字符串的替换:
Java中可以利用正则表达式将给定字符串中的指定字符或字符串替换成另外的字符或字符串。具体做法是用字符串对象调用public String replaceAll(String regex,String replacement)方法返回一个字符串,该方法中replacement表示替换后的字符串。实际应用如下:
package sj.RegularExpression;/*** 替换* * @author Songjie_xuan* @time 2014-10-13*/
public class Replace_Demo {public static void main(String[] args) {//String str = "我...要...要..吃..吃...饭!";System.out.println("替换前:\n" + str);String regex_Str = "\\.+";String new_Str = "";str = replace_Meth(str, regex_Str, new_Str);regex_Str = "(.)\\1+";new_Str = "$1";replace_Meth(str, regex_Str, new_Str);}/*** 替换* * @param all_Str* =>所有字符串* @param regex_Str* =>被替换的字符串* @param str* =>指定替换成该字符串*/public static String replace_Meth(String all_Str, String regex_Str, String str) {// str调用replaceAll(regex_Str, str)方法进行替换String new_Str = all_Str.replaceAll(regex_Str, str);// 输出替换后的字符串System.out.println("替换后:\n" + new_Str);return new_Str;}
}
测试结果如图:
注意:该方法不会改变当前字符串。
2.字符串的分割
正则表达式还可以将字符串按照给定的分隔字符分割字符串。具体做法是字符串调用public String[] split(String regex)方法,参数regex是分割字符串的分隔符。实际应用如下:
package sj.RegularExpression;/*** 分隔* * @author Songjie_xuan* @time 2014-10-13*/
public class Split_Demo {public static void main(String[] args) {// **一般分隔式切割**// String str = "七夜,杨亦风,魔雨,魔雷,魔电";// String regex_Str = ",";// out_Split(str, regex_Str);// **点分隔式切割**// String str = "七 夜.杨亦风.魔 雨.魔 雷.魔 电";// String regex_Str = "\\.";// out_Split(str, regex_Str);// **"\"式切割String str = "F:\\冷锋SJ记忆\\冷锋\\资料\\学习资料\\编程语言\\Java";String regex_Str = "\\\\";out_Split(str, regex_Str);// **多空格分隔式切割**// String str = "七夜 杨亦风 魔 雨 魔雷 魔电";// String regex_Str = " +";// out_Split(str, regex_Str);// **叠词切割**// String str = "cfgaaaabbcdfajdfkddaaaaff";// String regex_Str = "aa+";// out_Split(str, regex_Str);// **表达式重用**// 分组:使用()对正则表达式分组,每个分组有一个编号// "(.)\\第几组"引用该组// String str = "cfgaacbbdfajddfaakaaaafhf";// String regex_Str = "(.)\\1+";// out_Split(str, regex_Str);}public static void out_Split(String str, String regex) {System.out.println(str);String[] str_Arr = str.split(regex);// 加强遍历for (String test_Str : str_Arr) {System.out.println(test_Str);}}
}
3.字符串的提取
正则表达式还可以从字符串中提取指定的字符或字符串。实际应用如下:
package sj.RegularExpression;import java.util.regex.*;/*** 获取* * @author Songjie_xuan* @time 201-10-13*/
public class Get_Demo {public static void main(String[] args) {String _Str = "is equivalent to the three statements above abc cds afd adf";// **获取给定字符串中的所有单词**// 定义正则表达式re_Str// 代表从给定的字符串中获取由3个字母组成的单词String re_Str = "\\b[a-zA-Z]{3}\\b";// 将正则表达式编译成Pattern对象Pattern p = Pattern.compile(re_Str);// 将要处理的字符串和正则表达式关联起来,得到一个匹配器对象Matcher m = p.matcher(_Str);// 调用find()方法进行匹配while (m.find()) {String s = m.group();System.out.println(s);}}
}
测试结果如下:
正则表达式以及正则表达式在字符串的替换、切割、获取中的应用相关推荐
- Shell基础(四):字符串截取及切割、字符串初值的处理、基使用Shell数组、expect预期交互、使用正则表达式...
一.字符串截取及切割 目标: 使用Shell完成各种Linux运维任务时,一旦涉及到判断.条件测试等相关操作时,往往需要对相关的命令输出进行过滤,提取出符合要求的字符串. 本案例要求熟悉字符串的常见处 ...
- 正则的文字替换和字符串的替换哪个快_JavaScript正则表达式怎么用?
正则表达式(Regular Expression)是一门简单语言的语法规范,是强大.便捷.高效的文本处理工具,它应用在一些方法中,对字符串中的信息实现查找.替换和提取操作. JavaScript中的正 ...
- 8.1.6 正则表达式及字符串的替换与分解
8.1.6 正则表达式及字符串的替换与分解 1.正则表达式 2.字符串的替换 3.字符串的分解 1.正则表达式 正则表达式是一些具有特殊意义字符的字符串,这些字符串称作正则表达中的元字符 " ...
- python字符串正则替换_Python用正则表达式进行字符串替换方法
Python正则表达式在使用中会经常应用到字符串替换的代码.这篇文章主要介绍了Python正则表达式如何进行字符串替换,具有一定的参考价值,感兴趣的小伙伴们可以参考一下. Python正则表达式在使用 ...
- 正则表达式,字符串匹配、搜索、替换
str正则表达式,常常缩写为 "regex" 或 "regexp",是帮助程序员匹配.搜索和替换文本的模式. 1.匹配字符 myWant = /code/; / ...
- java正则表达式替换特殊字符_使用正则表达式替换报表名称中的特殊字符(推荐)...
正则表达式,又称规则表达式.(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表通常被用来检索.替换那些符合某个模式(规则)的文 ...
- linux的vim查找的正则表达式,VIM 正则表达式搜索字符串
在插入模式下,为了减少重复的击键输入,VIM 提供了若干快捷键,当你要输入某个上下文曾经输入过的字符串时,你只要输入开头若干字符,使用快捷键,VIM 将搜索上下文,找到匹配字符串,把剩下的字符补全,你 ...
- pandas使用replace函数和正则表达式移除dataframe字符串数据列中头部指定模式字符串(Removing leading substring in dataframe)
pandas使用replace函数和正则表达式移除dataframe字符串数据列中头部指定模式字符串(Removing leading substring in dataframe) 目录
- pandas使用replace函数和正则表达式移除dataframe字符串数据列中尾部指定模式字符串(Removing trailing substring in dataframe)
pandas使用replace函数和正则表达式移除dataframe字符串数据列中尾部指定模式字符串(Removing trailing substring in dataframe) 目录
最新文章
- 网页编辑html中怎么写搜索代码,如何在html页面中实现查找功能
- Windows 2000和WindowsXP中神秘的数字签名
- 本科生学习fpga,dsp,嵌入式操作系统哪个好
- 数据库存储模型-数据存储
- 2017年,我的身边发生了那些事?
- 【HDU - 2665】Kth number(区间第K大,主席树,模板)
- 支付宝ios SDK官方下载页面
- 常用设计模式的小结和实际中的应用
- SQLLDR载数加速,优化参数
- (转)国外Fintech创业者坦言:你不知道的Fintech三大困境
- win10系统怎么改奇摩输入法_教你打造最强「Windows 10」微软拼音输入法 + 600万词库下载...
- Windows Ubuntu,软件推荐,小技巧总结,免费内网穿透方案
- Win7英文版安装中文语言包过程及方法总结
- java项目图片保存在服务器,idea2019配置,Javaweb项目实现上传图片保存到本地文件文件夹,Tomcat服务器...
- 安卓病毒频发,做好手机安全防护很有必要
- 多数据库应用加强,增加表枚举约定数据库链接配置
- 数据恢复技术练习题(百道)
- 经典的网站反爬手段(超实用)
- 中国数据中心IT基础设施第三方服务行业运行状况分析及未来发展趋势展望报告2022-2027年
- android离线语音开发,Android应用开发之Android 云之声离线语音合成