如果在字符串中找到,我想将int, float, char, bool, main, cin, cout, if, else, else if, for, while, clrscr, getch, do, void
替换为""
(如删除它)。
所以,如果我有ff:
str = "main(){ clrscr(); couts<<"wrong"; cout<<"right"; }"
更换后,应该是:
str = "(){ (); couts<<"wrong"; <<"right"; }"
到目前为止,我所尝试的是(当然是错误的):
str = str.replace(/\s+(?:int|char|bool|main|float)/, "");//summarized
答案 0 :(得分:1)
您需要g
修饰符才能对字符串执行多次替换。您应该在正则表达式的两端使用\b
正则表达式来匹配单词边界。所以它应该是:
str = str.replace(/\b(int|char|bool|main|float|...)\b/g, "");
答案 1 :(得分:0)
使用单词边界\b
以及全局标记g
。
'main(){ clrscr(); couts<<"wrong"; cout<<"right"; }'.replace(/\b(?:int|float|char|bool|main|cin|cout|if|else|else if|for|while|clrscr|getch|do|void)\b/g, '');
在正则表达式中,\s+
会阻止字符串开头的匹配单词,因为您使用了+
重复运算符,这意味着至少有一个。您可以随时将\s+
替换为(\s+|^)
,但您仍会遇到一个问题:空格将成为匹配的一部分,它们也会被替换。因此,匹配字边界的\b
可以更好地为您服务。