iOS 中的正则表达式符号
最近重新看了一遍 iOS 的正则文档,简单翻译下文档中涉及到的符号
1.正则表达式元字符
| 符号 | 说明 |
|---|---|
| \a | 响铃, \u0007 |
| \A | 匹配输入的开始,只匹配第一行,也就是忽略多行选项 |
| \b | 不在[]包含时,匹配单词的边界,也就是\w和\W的中间 |
| \b | 在[]包含的集合内,匹配 BACKSPACE, \u0008 |
| \B | 当前位置不是单词的边界 |
| \cX | Ctrl+X |
| \d | 所有十进制数字 Nd |
| \D | 所有非十进制数字 |
| \e | ESCAPE, \u001B. |
| \E | 结束\Q...\E引用段 |
| \f | 匹配换页符 FORM FEED, \u000C |
| \G | 当前位置是上个匹配的结束处,第一次匹配的是单词的开始 |
| \n | 换行符 LINE FEED, \u000A. |
| \N{UNICODE CHARACTER NAME} | 匹配Unicode 命名对应的字符。见参考3 |
| \p{UNICODE PROPERTY NAME} | 匹配对应命名字符集里的字符 |
| \P{UNICODE PROPERTY NAME} | 匹配不在命名字符集里面的字符 |
| \Q | 引用字符直到\E结束,这个引用区间的字符都不需要转义符 |
| \r | 回车 CARRIAGE RETURN, \u000D |
| \s | 空白字符,[\t\n\f\r\p{Z}] |
| \S | 非空白字符 |
| \t | 水平制表符 |
| \uhhhh | 匹配Unicode代码中十六进制代码为hhhh的字符 |
| \Uhhhhhhhh | 匹配Unicode代码中十六进制代码为hhhhhhhh的字符,必须是8位,虽然最大的Unicode 值是\U0010ffff |
| \w | 匹配一个单词字符 [\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}] |
| \W | 匹配所有的非单词字符 |
| \x{hhhh} | 匹配十六进制hhhh表示的字符,支持1-6位 |
| \xhh | 匹配2位十六进制hh表示的字符 |
| \X | 匹配一个字符群集(Grapheme Cluster) |
| \Z | 匹配输入的结束,如果最后一行后面还有换行符,也匹配 |
| \z | 匹配输入的结束 |
| \n | 回溯引用,匹配第n个匹配,n ≥ 1 并且 ≤ 总匹配数量 |
| \0ooo | 八进制代码为ooo的字符,ooo可以是1到3位。0377是最大的被允许的字符。注意开始的0是必须的,区分8进制和回溯引用 |
| [pattern] | 匹配pattern中包含的字符 |
| . | 匹配任意字符 |
| ^ | 匹配一个行的开始 |
| $ | 匹配一个行的结尾 |
| | 转义符,需要转义的符号有 * ? + [ ( ) { } ^ $ | . / |
2.操作符
| 符号 | 说明 |
|---|---|
| | | A |
| * | 0或多次,尽可能多匹配 |
| + | 1或多次,尽可能多匹配 |
| ? | 0或1次,1次优先 |
| {n} | 匹配n次 |
| {n,} | 匹配至少n次,尽可能多匹配 |
| {n,m} | 匹配n-m次,不多于m的情况下尽可能多匹配 |
| *? | 0或多次,尽可能少匹配 |
| +? | 1或多次,尽可能少匹配 |
| ?? | 0或1次,优先0次 |
| {n}? | 匹配n次 |
| {n,}? | 匹配至少n次,尽可能少匹配 |
| {n,m}? | 匹配n-m次,不少于n的情况下尽量少匹配 |
| *+ | 0或多次,尽可能多匹配 |
| ++ | 1或多次,尽可能多匹配 |
| ?+ | 0或1次,尽可能多匹配 |
| {n}+ | 匹配n次 |
| {n,}+ | 匹配至少n次,尽可能多匹配 |
| {n,m}+ | n到m次,尽可能多匹配 |
| (...) | 匹配区域,子表达式 |
| (?:...) | 不选去的子表达式,用来提高效率 |
| (?>...) | 固化分组,匹配后就成为一个整体,不留下回溯点防止回溯 |
| (?# ... ) | 注释 |
| (?= ... ) | 零宽断言,匹配表达式前面的位置 |
| (?! ... ) | 零宽断言,匹配后面不是表达式的位置 |
| (?<= ... ) | 零宽断言,匹配表达式后面的位置,表达式不可以是无边界的(不可以包含 * 和 + 操作符) |
| (?<! ... ) | 零宽断言,匹配后面不是表达式的位置,表达式不可以是无边界的(不可以包含 * 和 + 操作符) |
| (?ismwx-ismwx: ... ) | 标记设置,设置表达式运算时使用的标记是否有效,或者无效(-) |
| (?ismwx-ismwx) | 标记设置,改变之后位置的正则运算标记 |
3. 替换模板匹配格式
|$n|匹配第n个表达式,n必须 >= 0 并且小于表达式数量|
||转义符,基本上只有'$' and ''需要|
4. 标记选项
| 符号 | 说明 |
|---|---|
| i | 不区分大小写 |
| x | 允许空格和 #注释 出现在表达式中,都会被忽略 |
| s | "."可以匹配换行符,默认 回车、换行不被匹配 |
| m | 多行匹配,让"^" 和 "$"在每一行都能匹配,而不仅仅只是整个字符串 |
| w | 控制\b表示Unicode UAX 29 http://www.unicode.org/reports/tr29/ 规定的边界,还是简单的 word 或 non-word 区别 |
一些说明
1.什么是 ICU
全称 International Components for Unicode,是一套成熟的 UNICODE 相关开发包。具体见 http://site.icu-project.org/
2.什么是 UNICODE
UNICODE 是一种字符编码方案。具体见 http://www.unicode.org/
每个编码对应一个字符,已经分配的编码都有个name,一组编码形成一个分组
Plane 分为17个组,每组65536个编码
Category 一组类似的字符的集合,有Value代表这个集合
Name 每一个分配了字符的码,都有一个别名
可以见参考5
3.一些 UNICODE 字符组
| 类名 | 说明 |
|---|---|
| \p{Z} | 任何种类的空白或不可见的分隔符 |
| \p{Zs} | 一个不可见但是却会占用空间的空白字符 |
| \p{Zl} | 行分隔符U+2028 |
| \p{Zp} | 段分隔符U+2029 |
4. Grapheme Cluster
Unicode grapheme clusters(字符集群)
一个unicode scalar定义的字符和多个unicode scalar定义是一样的,我们称这多个unicode scalar 叫Unicode grapheme clusters
例如
é 可由\u{00e9}表示也可由\u{0065}\u{0301}共同表示,\u{0065}\u{0301}就是grapheme cluster
5.\G的用法
\G\w
test string
可以匹配到 t e s t
6.不连续性
注意不是所有的21位 Unicode 标量都代表一个字符,因为有一些标量是留作未来分配的。已经代表一个典型字符的标量都有自己的名字
参考
1.http://leoliuyt.github.io/2016/10/07/Swift%E4%B8%AD%E7%9A%84Unicode%E3%80%81String/
2.http://www.regular-expressions.info/continue.html
3.http://unicode.org/charts/charindex.html
4.http://www.blogjava.net/zhugf000/archive/2005/12/12/23414.html#ref_unicode_category
5.https://en.wikipedia.org/wiki/Unicode_character_property
iOS 中的正则表达式符号的更多相关文章
- iOS中运用正则表达式
iOS中运用正则表达式来匹配短信验证码,电话号码,邮箱等是比较常见的. 在iOS中运用正则表达式主要有三种方式: -:通过谓词下面是实例代码: - (BOOL)regularExpresionWith ...
- iOS中使用正则表达式去掉HTML中的标签元素获得纯文本的方法
content是根据网址获得的网页源码字符串 - (NSString *)changeToString:(NSString *)content { NSRegularExpression *regul ...
- 正则表达式在iOS中的运用
1.什么是正则表达式 正则表达式,又称正规表示法,是对字符串操作的一种逻辑公式.正则表达式可以检测给定的字符串是否符合我们定义的逻辑,也可以从字符串中获取我们想要的特定部分.它可以迅速地用极简单的方式 ...
- iOS中使用正则
一.什么是正则表达式 正则表达式,又称正规表示法,是对字符串操作的一种逻辑公式.正则表达式可以检测给定的字符串是否符合我们定义的逻辑,也可以从字符串中获取我们想要的特定部分.它可以迅速地用极简单的方式 ...
- iOS 和Android中的正则表达式简单使用
ios 中需要使用NSRegularExpression类,NSTextCheckingResult类. 下面给出最基本的实现代码 NSRegularExpression *regex = [NSRe ...
- iOS开发-正则表达式3种形式
转至:http://www.cnblogs.com/GarveyCalvin/p/4250145.html iOS开发-正则表达式的使用方法 前 言:在表单验证中,我们经常会使用到正则,因为我们需要用 ...
- ACM中的正则表达式
layout: post title: ACM中的正则表达式 author: "luowentaoaa" catalog: true mathjax: true tags: - 正 ...
- 9.JAVA中的正则表达式
一.JAVA中的正则表达式 1.概念:以某种特定的方式描述字符串 1.Java中正则表达式的规则 ? #{0,1}-?有一个-或者没有 \\ #表示一个" ...
- iOS中获取各种文件的目录路径的方法
我们的app在手机中存放的路径是:/var/mobile/Applications/4434-4453A-B453-4ADF535345ADAF344 后面的目录4434-4453A-B453-4AD ...
随机推荐
- 使用combineReducers注意事项
一.从‘redux’包中引入combineReducers方法: import { combineReducers } from 'redux'; 二.针对state的不同属性写不同的reducer, ...
- Windows Server 2008 安装wampserver失败的总结
1.最好选择2.4以下版本. 2.如果报确实MSVCR100.dll的错误,需要下载运行环境包(参考博客)
- Tomcat组件启动流程图
看到一张关于Tomcat组件启动流程图,觉得还可以,收藏.
- 从windows到linux的换行转换工具dos2unix
同学们也许知道,windows中的文本文件的换行符是"\r\n",而linux中是"\n".由于换行符的不同,所以有的时候会发生一些莫名其妙的状况.至于具体什么 ...
- Mongod启动失败修复方法
可能的原因:上次服务未正常关闭 1.删除data/db目录下的mongo.lock文件 2.删除/tmp/mongodb-27017.sock文件
- Cocos2d-x 3.1.1 学习日志3--C++ 初始化类的常量数据成员、静态数据成员、常量静态数据成员
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u011292087/article/details/37598919 有关const成员.stati ...
- 【[HAOI2009]逆序对数列】
发现自己学了几天splay已经傻了 其实还是一个比较裸的dp的,但是还是想了一小会,还sb的wa了几次 首先这道题的状态应该很好看出,我们用\(f[i][j]\)表示在前\(i\)个数中(即\(1-i ...
- 面试准备——(二)专业知识(1)Linux
面试的问题: 腾讯: 1. 查看进程的命令 美团: 1. 常用的命令——美团/滴滴 2. 如何在性能测试的时候查看进程 3. kill -9/-15区别 滴滴: 1.如何找到一个特定文件 2. 如何替 ...
- java8的4大核心函数式接口
//java8的4大核心函数式接口//1.Consumer<T>:消费性接口//需求:public void happy(double money, Consumer<Double& ...
- P2916 [USACO08NOV]安慰奶牛Cheering up the Cow
往奶牛里打气 题目评级不难. 感觉思路有值得借鉴的地方.(虽然少,毕竟积沙成塔吗qwq) 很容易看出来,是要求最小生成树的. 然后生成树的计算方式不一样. 我们考虑拼接(感觉大部分oi都可以使用类似的 ...