如何从R

时间:2019-04-24 18:05:08

标签: r regex

我要删除所有特殊字符,例如{@,<,!,\,“,#,$,%,/,(,),=,?,',¿,`,^,´,: ,。,-,}从单词的开头或单词的结尾开始,例如:

    emails              email
    `xxxx@gmail.com     xxxx@gmail.com
    ^bbb@yahool.com     bbb@yahool.com
    hjhk@grk.co!        hjhk@grk.co
    $gh$hd@test.co       gh$hd@test.co
    good_email@test.co  good_email@test.co
    gggh@gh.tom)        gggh@gh.tom

第一列“ emails”是实际列,最后一列“ email”是所需的输出。任何帮助将不胜感激。 TIA。

2 个答案:

答案 0 :(得分:2)

您可以使用此正则表达式并使用空字符串将其删除

^\W+|\W+$

Regex Demo

R Code demo

gsub("^\\W+|\\W+$", "", "`xxxx@gmail.com")
gsub("^\\W+|\\W+$", "", "^bbb@yahool.com")
gsub("^\\W+|\\W+$", "", "hjhk@grk.co!")
gsub("^\\W+|\\W+$", "", "$gh$hd@test.co")
gsub("^\\W+|\\W+$", "", "good_email@test.co")
gsub("^\\W+|\\W+$", "", "gggh@gh.tom)")

打印已清理的电子邮件地址,

[1] "xxxx@gmail.com"
[1] "bbb@yahool.com"
[1] "hjhk@grk.co"
[1] "gh$hd@test.co"
[1] "good_email@test.co"
[1] "gggh@gh.tom"

答案 1 :(得分:-1)

This RegEx可能会帮助您获取所需的字符,而不是删除其他字符。它将创建一个组,您可以在其中简单地使用//foo.h #include <iostream> static void print_num_times_called() { static int num_times_called = 0; ++num_times_called; std::cout << num_times_called << "\n"; } void call_print_num_times_called(); //foo.cpp #include "foo.h" void call_print_num_times_called() { print_num_times_called(); } //main.cpp #include "foo.h" void main() { for (int i = 0; i < 10; ++i) { print_num_times_called(); } for (int i = 0; i < 10; ++i) { call_print_num_times_called(); } } //output 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 对其进行调用。

$1

enter image description here

通常安全的做法是先传递有限的字符列表,然后过滤其他所有字符。