加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式 – R中的正则表达式括号之谜

发布时间:2020-12-14 06:02:17 所属栏目:百科 来源:网络整理
导读:我正在尝试使用str_extract在文本文档中查找日期.但是,我遇到了一个难题.一般来说,我希望日期有两种形式:1)1914年6月15日2)1914年6月15日.但是当我尝试构建一个模式来捕获这两个选项时,我得到了NA结果. 例如,如果我尝试str_extract(“No.1.1914年6月20日.”
我正在尝试使用str_extract在文本文档中查找日期.但是,我遇到了一个难题.一般来说,我希望日期有两种形式:1)1914年6月15日2)1914年6月15日.但是当我尝试构建一个模式来捕获这两个选项时,我得到了NA结果.

例如,如果我尝试str_extract(“No.1.1914年6月20日.”,“[:alpha:] {3,8} [0-9] {1,2} [[az] {2}] ?,[0-9] {4}“),我得到NA.但如果我删除[a-z] {2}周围的括号,它就可以了.但是,如果我删除括号,我当然会获得字符串“No.1.1914年6月20日”的NA.但是,如果我留下括号,这确实有效.

我当然可以通过使用简单的if / else if语句解决这个问题,但我很好奇为什么这不起作用,并且如果有更好的方法来处理这些组合的情况.

解决方法

由于以下原因,它无法正常工作:

>您的POSIX字符类未正确包装在括号内的表达式中.
>您正在尝试将字符类用作可选的组构造.

您的正则表达式修复如下:

x <- 'No. 1. June 20th,1914.'
str_extract(x,'[[:alpha:]]{3,8} [0-9]{1,2}([a-z]{2})?,[0-9]{4}')
## [1] "June 20th,1914"

您可以修改正则表达式:

str_extract(x,'[a-zA-Z]+ d{1,d{4}')

(编辑:李大同)

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

    推荐文章
      热点阅读