我要删除所有特殊字符,例如{@,<,!,\,“,#,$,%,/,(,),=,?,',¿,`,^,´,: ,。,-,}从单词的开头或单词的结尾开始,例如:
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。
答案 0 :(得分:2)
您可以使用此正则表达式并使用空字符串将其删除
^\W+|\W+$
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
通常安全的做法是先传递有限的字符列表,然后过滤其他所有字符。