如何创建正则表达式:匹配符号且排除字母、数字、点与换行?
正则表达式匹配指定符号的解决方案
- 用否定字符类就能精准实现需求,Python re模块完全支持这个写法。你需要匹配的是「非字母、非数字、非点、非换行符」的字符,直接写:
[^\w.\n]- 拆解说明:
\w等价于[a-zA-Z0-9_],匹配字母、数字和下划线;字符类开头的^表示取反,所以这个表达式会排除掉所有字母、数字、下划线、点和换行符,只匹配剩下的符号。
- 拆解说明:
- 你之前用的
\D\W逻辑不对,\D是匹配单个非数字字符,\W是匹配单个非单词字符,连在一起是匹配两个连续字符,不是单个符合要求的字符,这就是你之前碰壁的原因。 - 附Python测试代码:
import re test_content = "Test!@#$ 456. \nAnother_line?" result = re.findall(r'[^\w.\n]', test_content) print(result) # 输出:['!', '@', '#', '$', ' ', '?'] - 如果需要排除下划线(因为
\w包含下划线),把表达式改成[^a-zA-Z0-9.\n]即可,这样就彻底过滤掉字母、数字、点和换行符,只保留其他符号。
内容的提问来源于stack exchange,提问作者mathis_dukatz
相关产品推荐
相关产品推荐

