楼主: doubleyin
1164 7

[问答] 关于stringr的小问题 [推广有奖]

  • 0关注
  • 0粉丝

已卖:92份资源

本科生

40%

还不是VIP/贵宾

-

威望
0
论坛币
713 个
通用积分
1.6606
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
100 点
帖子
27
精华
0
在线时间
113 小时
注册时间
2020-3-9
最后登录
2021-4-14

楼主
doubleyin 发表于 2020-4-27 10:44:26 |AI写论文
30论坛币
```{r}
    phone <- regex("
      \\(?     # optional opening parens
      (\\d{3}) # area code
      [)- ]?   # optional closing parens, dash, or space
      (\\d{3}) # another three numbers
      [ -]?    # optional space or dash
      (\\d{3}) # three more numbers
      ", comments = TRUE)
    str_match("514-791-8141", phone)
    # automatically throw out each group
    ```
为什么把 str_match("514-791-8141", phone)换成 str_match("514 791 8141", phone)之后就会出错

最佳答案

llb_321 查看完整内容

R Markdown phone
关键词:string tring RING ING 小问题
已有 1 人评分论坛币 收起 理由
llb_321 + 5 精彩帖子

总评分: 论坛币 + 5   查看全部评分

沙发
llb_321 在职认证  发表于 2020-4-27 10:44:27
doubleyin 发表于 2020-4-27 18:23
不行 改之后还是报错而且str_match("514-791-8141", phone)识别也错了
R Markdown
phone <- regex("
      \\(?     # optional opening parens
      (\\d{3}) # area code
      [)-[:space:]]?   # optional closing parens, dash, or space
      (\\d{3}) # another three numbers
      [[:space:]-]?    # optional space or dash
      (\\d{3}) # three more numbers
      ", comments = TRUE)
    str_match("514 791 8141", phone)
##      [,1]          [,2]  [,3]  [,4]
## [1,] "514 791 814" "514" "791" "814"
    # automatically throw out each group

这回可以啦

藤椅
llb_321 在职认证  发表于 2020-4-27 12:54:03
[ -]?    # optional space or dash
这个表达式,并不是space或-,所以str_match找不到空格分隔的号码。
改成类似 (\\s|[-])?
已有 1 人评分论坛币 收起 理由
cheetahfly + 10 热心帮助其他会员

总评分: 论坛币 + 10   查看全部评分

板凳
doubleyin 发表于 2020-4-27 18:23:03
llb_321 发表于 2020-4-27 12:54
[ -]?    # optional space or dash
这个表达式,并不是space或-,所以str_match找不到空格分隔的号码。
...
不行 改之后还是报错而且str_match("514-791-8141", phone)识别也错了

报纸
llb_321 在职认证  发表于 2020-4-27 20:00:19
11.png
这是用dash分隔的,也可以



地板
doubleyin 发表于 2020-4-28 14:16:00
llb_321 发表于 2020-4-27 20:00
这是用dash分隔的,也可以
请问为什么 换成[:space:]就可以了呢

7
llb_321 在职认证  发表于 2020-4-28 14:25:07
doubleyin 发表于 2020-4-28 14:16
请问为什么 换成[:space:]就可以了呢
因为[]匹配的是字母数字横线,不包括空格,所以改成预先定义的[:space:]。应用正则表达式的时候,多试几次不同的方法就可以了。我也是不断地调试,才能找到正常的代码。
另外,我不需要论坛币,你的币也没几个,所以通过你几个贴子的评分,我都还给你了。
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
Sunknownay + 3 + 3 + 3 热心帮助其他会员

总评分: 学术水平 + 3  热心指数 + 3  信用等级 + 3   查看全部评分

8
doubleyin 发表于 2020-4-28 14:44:49
llb_321 发表于 2020-4-28 14:25
因为[]匹配的是字母数字横线,不包括空格,所以改成预先定义的[:space:]。应用正则表达式的时候,多试几次 ...
好的,非常感谢

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-9 05:36