加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 程序设计 > 正文

正则表达式(RegEx)——快速参考

发布时间:2020-05-22 16:58:18 所属栏目:程序设计 来源:互联网
导读:正则表达式(RegEx)——快速参考 基础知识 在任意位置进行匹配: 默认情况下, 正则表达式可以匹配被搜索字符串的 任意位置 的子字符串. 例如, 正则表达式 abc 可以匹配 abc123, 123abc 以及 123abcxyz. 要限制在开始或末尾进行匹配, 请使用 锚. 转义字符: 大

正则表达式(RegEx)——快速参考

基础知识

在任意位置进行匹配: 默认情况下,正则表达式可以匹配被搜索字符串的 任意位置 的子字符串. 例如,正则表达式 abc 可以匹配 abc123,123abc 以及 123abcxyz. 要限制在开始或末尾进行匹配,请使用 锚.

转义字符: 大多数字符 (例如 abc123) 可以直接使用在正则表达式中. 然而,.*?+[{|()^$ 这些字符则必须在其前面加上反斜线来进行匹配. 例如,. 表示一个原义的句点而 表示一个原义的反斜线. 使用 Q...E 能避免转义. 例如: QLiteral TextE.

区分大小写: 默认情况下,正则表达式是区分大小写的. 这种特性可以使用 "i" 选项进行改变. 例如,模式 i)abc 会搜索所有大小写形式的 "abc". 请参阅下面了解其他的选项.

选项 (区分大小写)

在正则表达式的最前面,指定零个或多个下列选项后面跟着闭括号. 例如,模式 "im)abc" 将带有不区分大小写和多行选项来搜索 abc (如果不含选项,则这个圆括号可以省略). 尽管这种语法有别于传统,不过它不需要特殊的分隔符 (例如正斜杠),因此不需要对模式中的这样的分隔符进行转义. 此外,由于很容易解析出选项,所以提升了性能.

注: 在两个选项间可以使用空格或 tab 分隔.

常用符号和用法

贪婪: 默认情况下,*, ?,+ 和 {min,max} 是贪婪的,因为它们消耗到 最后一个 能满足整个模式的可能的所有字符. 要让它们停在 首个 可能的字符,请在它们后面加上问号. 例如,模式 <.+> (其中没有问号) 表示: "搜索一个 <,接着一个或多个任意字符,然后是一个 >". 要在匹配 整个 字符串 <em>text</em> 时停止,请在加号后加上问号: <.+?>. 这样会让匹配在第一个 '>' 处停止,因此它只匹配第一个标签 <em>.

预测和回顾断言: 这组 (?=...), (?!...),(?<=...) 和 (?<!...) 被称为 断言,因为它们要求符合某个条件但不消耗任何字符. 例如,abc(?=.*xyz) 中含有预测断言,它要求在字符串 abc 右边的某个位置存在字符串 xyz (如果不存在,则匹配失败). (?=...) 被称为 预测断言,因为它要求指定的模式存在. 相反地, (?!...) 是 预测断言,因为它要求指定的模式 存在. 同样地, (?<=...) 和 (?<!...) 分别是正的和负的 回顾 断言,因为它们检查当前位置的 左边 而不是右边. 回顾比预测受到更多的限制,因为它们不支持可变大小的限定符,例如 *,? 和 +. 转义序列 K 类似于回顾断言,因为它会让前一个匹配的字符在最后的匹配字符串中省略. 例如,fooKbar 可以匹配 "foobar" 但报告匹配的结果为 "bar".

相关: 正则表达式由 RegExMatch(), RegExReplace() 和 SetTitleMatchMode 支持.

最后说明: 尽管这个页面涉及了大多数常用的正则表达式功能,但是还有相当一部分您可能希望了解的其他功能没有提及,例如条件子模式. 完整的 PCRE 手册请访问 www.pcre.org/pcre.txt

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读