【发布时间】:2019-12-26 09:13:36
【问题描述】:
看起来像一个重复的问题,但其他答案对我没有帮助。我正在尝试提取文本中的任何 8 位数字。该数字可以在文本中的任何位置。它可以是独立的,也可以是跟随或被字符串跟随。基本上,我需要从 R 中的字符串中提取任何出现的 8 个连续数字字符,仅使用正则表达式。
这是我尝试但无济于事的:
> my_text <- "the number 5849 and 5555555555 shouldn't turn up. but12345654 and 99119911 should be. let's see if 1234567H also works. It shouldn't. both 12345678JE and RG10293847 should turn up as well."
> ## this doesn't work
> gsub('(\\d{8})', '\\1', my_text)
[1] "the number 5849 shouldn't turn up. but12345654 and 99119911 should be. let's see if 1234567H also works. It shouldn't.both 12345678JE and RG10293847 should turn up as well."
我想要的输出应该提取以下数字:
12345654
99119911
12345678
10293847
同时,如果答案包括第二个正则表达式,用于仅提取第一次出现的 8 位数字,我将不胜感激:
12345654
编辑:我有一个非常大的表(大约 2 亿行),我需要在一个列上对其进行操作。什么是最有效的解决方案?
编辑:我意识到我的文本案例中缺少案例。文本中还有一些数字长度超过 8 位,但我只想提取正好是 8 位的数字。
【问题讨论】:
标签: r regex extract gsub string-length