需要一些帮助来创建正则表达式,例如:
Smith, John R
并将其转换为
john.r.smith@gmail.com
答案 0 :(得分:2)
您可以在regex
中使用以下C++11
:
string s = "Smith, John R"; // to john.r.smith@gmail.com
const regex r("(.*), (.*) (.*)");
const string fmt("$2.$3.$1@gmail.com");
cout << regex_replace(s, r, fmt) << endl;
注意:这将为您提供John.R.Smith@gmail.com
,如果您需要john.r.smith@gmail.com
,可能还需要将其更改为小写,这是一项非常简单的任务。
答案 1 :(得分:2)
由于没有指定语言,我在VIM中尝试过这种方法,并且效果很好。
%s/\v(\w*),\s*(\w*)\s*(\w)/\L\2.\L\3.\1@gmail.com/
附件是截图
答案 2 :(得分:1)
与之前的答案相同,但在Shell中:
echo "Smith, John R" | awk '{print tolower($0)}' | sed 's/\(.*\),\s\(.*\)\s\(.*\)/\2.\3.\1@gmail.com/g'
john.r.smith@gmail.com
其实感谢@ KP6,我意识到sed可以小写:) 因此,更简单的版本将是:
echo "Smith, John R" | sed 's/\(.*\),\s\(.*\)\s\(.*\)/\L\2.\L\3.\L\1@gmail.com/g'
john.r.smith@gmail.com
答案 3 :(得分:0)
抓住所需的令牌:
(.+?),\s(.+?)\s(.+)
$ 1是姓。
$ 2是名字
$ 3是中间名
现在建立您的电子邮件地址。
正如其他人所说,正则表达式似乎有点矫枉过正