EDIT2:我误解了正则表达式,它确实起作用了,实际上某些重音字符由触发正则表达式的2个字符组成。请无视。 编辑:请忘记整个“非法”字符部分,我误解了原始开发人员的评论。
我从github上创建了一个管理文件名的项目,但是在此过程中,它“为每个replacedict键删除了不是字母数字(+非拉丁字符),空格,破折号,下划线,点或括号的任何内容”
我希望它只删除禁止使用的字符,同时保留所有其他内容。
我已经尝试过在各种正则表达式帮助器站点上修改正则表达式,但没有成功。
for key, val in replacedict.items():
# Remove anything that is not an alphanumeric (+non-latin chars),
# space, dash, underscore, dot or parentheses for every replacedict key
val = re.sub(r'(?u)[^-\w.( )]', '_', val)
# folder dirs and the filename are now max 250 bytes long:
val = val.encode('utf-8')[:250].decode('utf-8', 'ignore')
replacedict[key] = val
答案 0 :(得分:1)
尝试使用此正则表达式,该正则表达式仅严格保留您要保留的字符,并用#include "gtest/gtest.h"
#include <cmath>
TEST(Pow, Two)
{
EXPECT_EQ(4, std::pow(2,2));
}
除去其余字符。
_
不必将[^-a-zA-Z0-9 _.()]
与Unicode一起使用,因为我们不希望\w
甚至匹配其他非英语字母,而只保留英语字母。
Python代码,
\w
确保用import re
s = 'abc #$ data 汉字 I want #$$#@$#$ removed also these ÀÊ also'
print(re.sub(r'[^-a-zA-Z0-9 _.()]', '_', s))
替换不需要的字符并在其后打印,
_
尝试使用此正则表达式,看看是否仍然遇到问题,让我知道是否还有某些字符无法正确替换为abc __ data __ I want ________ removed also these __ also
?