我想从较长的字符串"[11257]"
中删除带方括号和数字"[11257] 39558 39566 39569 39570 39572 39576 39577"
的字符串的一部分。这很简单。
easy_string <- "[11257] 39558 39566 39569 39570 39572 39576 39577"
sub("\\[.*?\\]", "\\1", easy_string, perl = TRUE)
哪个返回我期望的值:
[1] " 39558 39566 39569 39570 39572 39576 39577"
但是,我无法弄清楚如何调整我的正则表达式模式以选择多个匹配项。另外,更困难的字符串包括换行符,如:
hard_string <- "[11257] 39558 39566 39569 39570 39572 39576 39577 39583
[11269] 39592 39595 39596 39597 39600 39602 39607 39608 39611 39616 39618
[11281] 39621 39623 39624 39627 39631 39632 39633 39635 39639 39641 39644
[11293] 39649 39650 39656 39658 39667 39670 39671 39681 39682 39683 39684
[11305] 39694 39695 39704 39711 39712 39714 39715 39723"
当我运行sub()
命令时,R返回:
[1] " 39558 39566 39569 39570 39572 39576 39577 39583\n[11269] 39592 39595
39596 39597 39600 39602 39607 39608 39611 39616 39618\n[11281] 39621 39623
39624 39627 39631 39632 39633 39635 39639 39641 39644 \n[11293] 39649 39650
39656 39658 39667 39670 39671 39681 39682 39683 39684 \n[11305] 39694 39695
39704 39711 39712 39714 39715 39723"
当字符串中包含换行符时,如何删除所有方括号和其中的数字?
答案
感谢akrun,我使用了gsub()
并保存了结果,因此我可以在第二次gsub()
调用中删除换行符。
hard_fixed <- gsub("\\[.*?\\]\\s", "\\1", hard_string, perl = TRUE)
gsub("\\\n", "\\1", hard_fixed, perl = TRUE)
答案 0 :(得分:1)
我们需要gsub
(全局替换)而不是sub
来删除多次出现的模式。 sub
仅与模式的第一次出现匹配
gsub("\\[.*?\\]\\s", "\\1", hard_string, perl = TRUE)