正则表达式实例总结

来源:互联网 发布:淘宝组装秃狗 编辑:程序博客网 时间:2024/06/05 22:40
(?<![a-z0-9章])\s([^a-z]*?)
匹配前后都不是数字或字母的空格(前面为第x章除外),用于删去文本中多余空格
第一章 (前面为"章",此处空格不匹配)大厅
She (前后为字母,此处空格不匹配)started to...
她开始 (匹配此处多余空格)走同周游中国各地的旅程
<[^<>]*>
匹配HTML标签(不支持嵌套,但可多次替换删除)
[一二三四五六七八九十]
匹配中文章节
(?<=[一二三四五六七八九十]) (?!卷)
匹配前面为中文序号,后面不为卷的空格,替换成顿号"、"或点"."
(此处空格匹配)大厅
第 一 (此处空格不匹配)
(.+)(?=\r\n\1\r\n)
匹配相同两行的前一行(捕获并自动分组)
大厅(匹配这一行内容,不含换行)
大厅
(?<=,\d{3})\r\n(?!\{)
匹配字幕时间轴后换行(换行后没有大括号)
00:04:03,700 --> 00:04:05,290(匹配此处换行)
(此处没有“{”)快踩油门啊,伙计!
Step on the gas, dude!
(?<=\r\n)(?<!\d)\r\n(?=\d\d:\d\d:\d\d,)
匹配时间轴中没有数字序号的换行
15 (此处可能有空格)(此处不匹配,如果没有红色的“<”则会匹配,详见注释
01:14:45,842 --> 01:14:50,242
快踩油门啊,伙计!
(此处缺失数字序号,匹配)
01:14:51,042 --> 01:14:52,236
快踩油门啊,伙计!
注:如果没有红色的"<",(?=\r\n)(?<!\d)\r\n可能会匹配前面"15 "中空格后的换行:
(?=\r\n)断言其后为"\r\n"(事实上,其后确实是"\r\n",也正是我们要匹配的换行,此断言没有意义),
(?<!\d)断言其前不是数字,刚好成立
而加了"<"后,(?<=\r\n)断言其前为"\r\n",如果其前是空格,则无法匹配
=============================以下为转载,未测试=============================
第[一二两三四五六七八九十○零百0-91234567890]{1,12}章
按章查找
第[一二两三四五六七八九十○零百0-91234567890]{1,12}节
按节查找
第[一二两三四五六七八九十○零百0-91234567890]{1,12}(章|节)
按照章或节查找
^[1-9]\d*(\.\d+)?(\-[1-9]\d*(\.\d+))?$
^[0-9]+$
章节只有数字
<(\s*?)[^>]*>.*?</\1>|<.*? />
匹配HTML标记(仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力)
^\s*|\s*$
匹配首尾空白字符(可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式
\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匹配Email地址
[a-zA-z]+://[^\s]*
匹配网址URL(基本可以满足需求)
^[a-zA-Z][a-zA-Z0-9_]{4,15}$
匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线)
\d{3}-\d{8}|\d{4}-\d{7}
匹配国内电话号码(形式如 0511-4405222 或 021-87888822)
[1-9][0-9]{4,}
匹配腾讯QQ号(从10000开始)
匹配中国邮政编码
[1-9]\d{5}(?!\d)
评注:中国邮政编码为6位数字
\d{15}|\d{18}
匹配身份证(中国的身份证为15位或18位)
\d+\.\d+\.\d+\.\d+
匹配ip地址(提取ip地址时有用,不完善)
^[1-9]\d*$
匹配正整数
^-[1-9]\d*$
匹配负整数
^-?[1-9]\d*$
匹配整数
^[1-9]\d*|0$
匹配非负整数(正整数 + 0)
^-[1-9]\d*|0$
匹配非正整数(负整数 + 0)
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$
匹配正浮点数
^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$
匹配负浮点数
^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$
匹配浮点数
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$
匹配非负浮点数(正浮点数 + 0)
^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$
匹配非正浮点数(负浮点数 + 0)
^[A-Za-z]+$
匹配由26个英文字母组成的字符串
^[A-Z]+$
匹配由26个英文字母的大写组成的字符串
^[a-z]+$
匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+$
匹配由数字和26个英文字母组成的字符串
^\w+$
匹配由数字、26个英文字母或者下划线组成的字符串