R/python 正则表达式

\b 边界
^ 定位表达式,目标开始

$定位表达式,目标结束

.匹配换行符以外的任何单个字符

( ) 将相同模式放在一起

* 匹配前面的实体出现0次或更多次

? 匹配前面的实体出现0次或1次

+ 匹配前面的实体出现1次或更多次

{n} 匹配前面的实体精确地出现n次

{n,} 匹配前面的实体至少出现n次

{n.m} 匹配出现次数在n和m次之间

[] 包含,默认是一个字符长度
[^] 不包含,默认是一个字符长度
^[] 可以匹配中间的任意一个字符,且以该字符作为开头
|
\ 转义
[A-Z] 26个大写字母
[a-z] 26个小写字母
[0-9] 0至9数字
[A-Za-z0-9]26个大写字母、26个小写字母和0至9数字
分割

分割语法:
  • [A,H,T,W] 包含A或H或T或W字母
  • [a,h,t,w] 包含a或h或t或w字母
  • [0,3,6,8] 包含0或3或6或8数字
    也可以用|
  • [A|H|T|W] 包含A或H或T或W字母
  • [a|h|t|w] 包含a或h或t或w字母
  • [0|3|6|8] 包含0或3或6或8数字

\d:匹配0-9之间的任一数字,相当于[0-9]
\w:匹配任意的字母、数字和下划线,相当于[A-Za-z0-9_]
\s :用于查找空白字符。空白字符可以是:<strong>空格符、制表符、回车符 、换行符、垂直换行符、换页符。</strong>
[a-zA-Z0-9]:匹配任意的字母和数字
\b:匹配单词边界。
.:用于查找单个字符,除了换行和行结束符。
*:匹配前面元字符0次或多次,/ba/将匹配b,ba,baa,baaa ...
+:匹配前面元字符1次或多次,/ba
/将匹配ba,baa,baaa...
:匹配前面元字符0次或1次,/ba*/将匹配b,ba
x{3}:查找x出现3次的元素

加上括号,就是将匹配到的内荣中的括号内的东西提取出来
(.*?)为懒惰匹配,代表尽量少的匹配

R

R里面特殊的
\\d 0-9之间的一个数字
\\w a-zA-Z0-9_中间的一个
\\s 一个空格
[.] 这能匹配一个点号
[- .] 只能匹配一个-或者一个空格或者一个.

strings <- c(" 219 733 8965", "329-293-8753 ", "banana", "595 794 7569",
             "387 287 6718", "apple", "233.398.9187  ", "482 952 3315",
             "239 923 8115 and 842 566 4692", "Work: 579-499-7527", "$1000",
             "Home: 543.355.3679","13764132564")
phone <- "([2-9][0-9]{2})[- .]([0-9]{3})[- .]([0-9]{4})" ##因为有三个括号,所以返回三列
phone2 <- "([2-9][0-9]{2})[- .]([0-9]{3})[- .]([0-9]{4})
phone2 <- "(\\d{3})[- .](\\d{3})[- .](\\d{4})"
paten="^1[3|4|5|7|8][0-9]{9}$"
paten="^1[3,4,5,7,8]\\d{9}$"
str_match(strings, phone)
str_match(strings, pat)
image.png

..................................................................................................................................

请牢记:要想创建包含\d或者\s的正则表达式,你需要在字符串中对\进行转义,因此需要输入“\d”或者“\s”

创建多个可选模式。例如abc|d..f 可以匹配abc或者deaf,注意因为|优先级比较低,所以abc|xyz可以匹配的是abc或者xyz,而不是abcyz或者abxyz。
例如:


image.png

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容