正则:正,乃合于法则也;则,规则也。正则,正规,常规是也。
元字符:
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+"都是由英文字符组成的"); } else System.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); } } }
测试结果如下:
相关推荐
其中包括5个类,这5个类的代码基本概括了java正则表达式替换String的多种情况,比如获取某个文件路径中盘符/后边的部分内容,提取"<title>XXXX</title>"中的文字XXXX,用正则表达式获取指定字符串内容中的指定内容,...
替换 的功能是查找字符串中符合正则表达式的文本,并用相应的字符串替换; 分割 的功能是使用正则表达式对字符串进行分割。 正则表达式检索与替换 正则表达式的匹配方法 match()尝试从字符串的起始位置匹配一个模式...
给写了2个方法,一个是直接截取单个需要的字符串,比如字符串string a="ab123456",我只需要提取3,那么就是单独截取就可以了,从2开始到4结束就行。 第二个是把所有的符合条件的字符串都截取出来,提取出来,比如...
使用正则表达式拆分字符串,程序完全可以运行,方便大家开发和调试
如果你不熟悉这个术语,那么“正则表达式”(Regular Expression)就是一个字符构成的串,它定义了一个用来搜索匹配字符串的模式。 许多语言,包括Perl、PHP、Python、JavaScript和JScript,都支持用正则表达式处理...
C#字符串和正则表达式参考手册》》》》》》》》》》》
根据java正则表达式生成一个随机的字符串,具体可以去一下网站看:https://code.google.com/p/xeger/
Java根据正则表达式生成字符串,包括了Xeger和automaton
包含了常用正则表达式的使用,验证,正则表达式替换字符串,判断字符串是否为正整数,判断输入的字符串是否全是英文、中文....
PPT 讲述了正则表达式的使用方式以及如何使用python来操作正则表达式,内容简洁实用,适合平时查询,也适合PPT演讲使用~
正则表达式判断不包涵特殊字符(除了 指定字符 以外)
正则表达式正则表达式正则表达式正则表达式 验证程序
而本软件正是把强大的正则功能完美地添加到表格中,让 Excel、WPS 支持正则表达式的搜索、匹配提取、替换、定位等,让数据处理能力进化一个层次! 让 Office Excel、WPS 表格支持正则表达式的免费插件:「Excel ...
java正则表达式替换字符串
powerbuilder正则表达式,可以截取不定字符串。如 string ls_text ls_text = ' date of payment: 01.11.2004 ' …… ls_date = lnvo_re.of_getmatch(ls_text) //'01.11.2004' ls_day = lnvo_re.of_getmatch(ls_text,...
正则表达式,正则表达式,正则表达式 正则表达式 正则表达式 正则表达式 正则表达式 正则表达式 正则表达式
常用正则表达式 正则表达式 常用正则表达式 正则表达式
string :需要进行正则处理的字符串 pattern :进行匹配的正则表达式 position :起始位置,从第几个字符开始正则表达式匹配(默认为1) occurrence :标识第几个匹配组,默认为1 modifier :模式(‘i’不区分大...
利用正则表达式巧妙解析度分秒格式字符串,代码简单明了同时易于维护。希望和爱好编程的朋友交流
正则表达式在程序开发中的应用比较广泛,通过对正则表达式的介绍,可以让你在程序开发中,规范又便捷!