用另一个替换单词字符 - 正则表达式

时间:2018-03-14 08:42:28

标签: regex python-3.x

我试图将字符替换为其他' any'特殊字符,如下例所示:

"if there is a definitive answer ? $120.223"
to
"** ***** ** * ********* ****** * ****.***"

或维护每个单词的第一个和最后一个字符,如:

"if there is a definitive answer ? $120.223"
to
"if t***e is a d*******e a****r ? $***.**3"

是否可以使用正则表达式而不是构建纯代码(手动)功能来实现?

我认为可以在re python库中使用子函数来实现,但我不知道在函数的第二个参数(repl)中使用了什么!如果是这样,任何建议的资源?

3 个答案:

答案 0 :(得分:1)

您可以使用正则表达式选择非空白序列的中间

([^\s])([^\s]*)([^\s])

然后用适当数量的*字符替换中间部分(\ 2)。如果你想跳过。你必须单独做这个角色

答案 1 :(得分:1)

import re
s="if there is a definitive answer ? $120.223"
print(s)
print(re.sub("[a-z]|[A-Z]|[0-9]", '*', s))

输出

if there is a definitive answer ? $120.223
** ***** ** * ********** ****** ? $***.***

答案 2 :(得分:0)

我解决了它,因为没有函数知道中间字符的长度,因为@Lance_Toth在他的评论中说,我在正则表达式中处理“字符级别”:

reg = r'((?<!\b)[^\s0-9](?=[a-zA-Z$]))'
txt = 'There seem to be an , fdf'

print(re.sub(reg, r'*', txt))

输出:

T***e s**m to be an , f*f