我正在解析不同的文档,我想要一个正则表达式模式来消除模式中未包含的任何字符。
我使用的模式是'[^0-9^a-z^A-Z^.^,^/^-]'
,我的输出字符串为re.sub('[^0-9^a-z^A-Z^.^,^/^-]', ' ', line)
但如果行是iban: es45 **** **** 1234 5678 9012
,则星号消失。
我已经尝试过这种模式'[^0-9^a-z^A-Z^.^,^/^-^*]'
但是16-01-2107
这样的字符串失败了。
我想处理这样的字符串:
foo
Foo
BAR: foo
Bar B.R.
45%
1.000,42
16-01-2107
16/01/2107
es45 **** **** 1234 5678 9012
我的模式适用于除最后一个之外的所有字符串。
我如何修改此案例的模式?
编辑: 为了更简洁,我希望得到我刚才写的字符串,消除文件行可能包含的其余字符,例如制表,换行符,空行,非ASCII字符,{}或| < / p>
答案 0 :(得分:1)
所以给定一个字符串,你想要消除字符串 中的所有字符,除了 这些字符:[0-9a-zA-Z.,/*-]
。
对于初学者来说,匹配除了这些字符之外的任何字符的正则表达式是
[^0-9a-zA-Z.,/*-]
使用此代码将为您提供已删除所有所需字符的输出字符串:
re.sub('[^0-9a-zA-Z.,/*-]+', '', line)
使用您的示例字符串,以下是每个字符串的输出结果:
foo
Foo
BARfoo //space and colon removed
BarB.R. //space removed
45 //removed %
1.000,42
16-01-2107
16/01/2107
es45********123456789012 //spaces removed
答案 1 :(得分:0)
您需要正确转义字符,请尝试以下操作。
[^0-9a-zA-Z.,\-\*]+$