【发布时间】:2018-02-05 16:40:47
【问题描述】:
我正在解析不同的文档,并且我想要一个正则表达式模式来消除模式中未包含的任何字符。
我使用的模式是'[^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 字符、{} 或 |
【问题讨论】:
-
预期的输出究竟是什么?此外,您提到您正在尝试消除模式中没有的任何字符,但那到底是什么?您的正则表达式不正确,因此很难确定您实际上要做什么。我认为您正在尝试匹配不是
0-9a-zA-Z.,/-的任何内容。如果是这种情况,请使用[^0-9a-zA-Z.,/-] -
您的问题似乎使用模糊,项目符号列出预期和预期
-
也许
[^0-9a-zA-Z.,/*-]和这个outcome? -
你是对的。我的问题不清楚。我已经编辑过了。我写的字符串是我需要的输出。但是,lines 文件包含其他字符、制表符、空行、/r/n... 我需要删除它
-
@the-fourth-bird 这正是我想要的。正则表达式是如此之大,如此之难。我想我使尝试表达复杂化。谢谢
标签: python regex python-2.7