一、正则表达式的元字符
元字符 | 说明 | 备注 |
^ | 代表行的开始 | ^abc匹配以abc为开头的行 |
$ | 代表行的结束 | abc$匹配以abc为结尾的行 |
[字符组] [] |
匹配若干字符之一 |
|
| | 表示或的关系 |
|
. | 匹配任意字符 | |
\< | 单词的起始位置 | \<cat 以cat开始的单词 |
\> | 单词的结束为止 | cat\>以cat结尾的单词 |
\ | 转义字符 | \*表示就是匹配*。不作为元字符使用 |
\b | 单词分界符 | |
\d | 数字[0-9] |
|
\s | 匹配空白 |
|
\w | 匹配包括下划线的任何单词字符 |
|
二、量词
元字符 | 说明 | 备注 |
* | 0-无穷 | a*表示匹配0个到多个a字符 |
? | 0-1 | 可以不出现,也可以出现 |
+ | 1-无穷 | 至少出现一次 |
{min,max} | min-max | 能够出现的容许范围是min-max 例如{3,,6} |
{n} | n | 固定出现的次数 |
{min,} | 至少出现的次数 | |
{0,max} | 至多出现的次数 |
三、反向引用
可以匹配与先前部分匹配的同样的文本。正则表达式可以记忆先前匹配的文本。
例如匹配重复的单词,例如 the the
([a-zA-Z]+)\s\1
当然可以出现多个括号,引用的顺序是以开括号从左向右就行的,例如([a-z]+)([A-Z])\s+\1\2
四、问号关联的元字符
环视结构不匹配字符,匹配特定位置
元字符 | 说明 | 备注 |
(?:xxx) | 分组但是不捕获 | |
(?=xxx) | 肯定顺序环视 | 子表达式可以匹配右侧的文本 |
(?!=xxx) | 否定顺序环视 | 子表示式不能匹配右侧的文本 |
(?<=xxx) | 肯定逆序环视 | 子表达式可以匹配左侧的文本 |
(?<!xxx) | 否定逆序环视 | 子表达式不能匹配左侧的文本 |
五、示例
1、提取javadoc的标签和值
标签都是以@开头的,而且标签的key为字母、数字、下划线、连接符组成。然后是空白。然后是value值
value值得模式为非@符合、非换行符。
public class TagParser { private static final Pattern pattern = Pattern.compile("@([\\w-]+)\\s+([^@\\r\\n]+)"); private List<Pair> tags = new ArrayList<Pair>(); public void parse(String content) { tags.clear(); Matcher matcher = pattern.matcher(content); while (matcher.find()) { Pair p = new Pair(); p.key = matcher.group(1); p.value = matcher.group(2); tags.add(p); } } public List<Pair> getTags() { return Collections.unmodifiableList(this.tags); } public static final class Pair { private String key; private String value; public String getKey() { return key; } public String getValue() { return value; } } }
2、为数字插入逗号分隔符
例如数字123456789可读性比较差,插入逗号123,456,789.
此时需要匹配位置,这个位置的左边存在数字,右边数字的个数是3的倍数。
初始定的正则表达式为:(?<=\d)(?=(\d\d\d)+)。但是运行的时候结果为1,2,3,4,5,6,789。因为右边始终是3的倍数的
修改表达式为:(?<=\d)(?=(?:\d\d\d)+$) 这个位置的左边存在数字,右边数字的个数是3的倍数,然后是结尾。
相关推荐
正则表达式整理汇总,含以下内容 [1]里面在包括一个正则表达式测试小程序 RegexTester.exe [2]正则表达式30分钟入门教程.pdf] [3]正则表达式规则.doc [4]正则表达式30分钟入门教程.mht 自己整理用的,现在...
常用正则表达式整理收集常用正则表达式整理收集常用正则表达式整理收集
asp.net\C#正则表达式整理+\C#正则表达式整理 .docasp.net\C#正则表达式整理+\C#正则表达式整理 .doc
CSharp正则表达式整理备忘,有简单代码示例,比较完整。
有一段时间,正则表达式学习很火热很潮流,当时在CSDN一天就能看到好几个正则表达式的帖子,那段时间借助论坛以及Wrox Press出版的《C#字符串和正则表达式参考手册》学习了一些基础的知识,同时也为我在CSDN大概赚了...
014_正则表达式之“或”实例1.wmv 015_正则表达式之“或”实例2.wmv 016_正则表达式之分组应用.wmv 017_正则表达式之分组应用2.wmv 018_正则表达式之分组应用3.wmv 019_正则表达式之非捕获数组应用.wmv 020_正则...
主要为大家分享了最全的常用正则表达式大全,包括校验数字、字符、一些特殊的需求...所以我最近把开发中常用的一些正则表达式整理了一下,包括校验数字、字符、一些特殊的需求等等。给自己留个底,也给朋友们做个参考。
在使用RPA软件比如UiBot制作机器人过程中,会经常要使用到正则表达式来进行数据处理,于是本人搜集整理了常用的正则表达式,方便大家使用
从网上整理出来的C#正则表达式备忘(PDF格式)
正则表达式的语法很令人头疼,即使对经常使用它的人来说也是如此。工作之余整理正则表达式的匹配规则,希望大家喜欢。
C#正则表达式整理,C#正则表达式整理备忘.pdf
正则表达式能够很方便的验证数据的合法性,给程序的开发带来了很大的方便。
python语言正则表达式的详细整理,可以更加简单的看懂python正则表达式的使用规则
前几天在CSDN多个版块看到需要日期正则的帖子,所以整理了这篇文章,和大家一起讨论交流,如有遗漏或错误的地方,还请大家指正。 日期正则一般是对格式有要求,且数据不是直接由用户输入时使用。因应用场景的不同,...
正则表达式API帮助文档.CHM,正则表达式,语言中要用到的
正则表达式语法,句例,口诀,使用详解,教程等等内容
整理的网上一篇VBA正则式方面的文章
常用正则表达式:包含 IP地址、邮政编码、号、XML文件、号、电话号、手机号、域名、Email地址。
js经典正则表达式 各类正则表达式收藏只能输入数字:“^[0-9]*$” 只能输入n位的数字:“^d{n}$” 只能输入至少n位数字:“^d{n,}$” 只能输入m-n位的数字:“^d{m,n}$” 只能输入零和非零开头的数字:“^(0|[1-9][0...