正则表达式匹配字符串与特定字符

时间:2018-02-05 16:40:47

标签: python regex python-2.7

我正在解析不同的文档,我想要一个正则表达式模式来消除模式中未包含的任何字符。 我使用的模式是'[^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>

2 个答案:

答案 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.,\-\*]+$