正则表达式查找匹配字符串然后删除空格

时间:2017-07-14 03:14:51

标签: python regex

这里的regex很新,所以我不知道该如何做到这一点。仅供参考我正在使用Python,但我不确定它有多重要。

我想做的是这样的事情:

string1 = 'Metro boomin on production wow'
string2 = 'A loud boom idk why I chose this as an example'
pattern = 'boom'
result = re.sub(pattern, ' ____ ', string1)
result2 = re.sub(pattern, ' ____ ', string2)

现在,这会给我"Metro ____in on production wow""a loud ____ idk why I chose this as an example

我想要的是"Metro ______ on production wow""a loud ____ idk why I chose this as an example"

基本上我想在另一个字符串中找到目标字符串,然后将匹配的字符串和2个空格之间的所有内容替换为新字符串

有没有办法可以做到这一点?如果可能的话,最好根据原始字符串的长度在替换字符串中使用可变长度

1 个答案:

答案 0 :(得分:2)

你走在正确的轨道上。只需延长你的正则表达式。

In [105]: string = 'Metro boomin on production wow'

In [106]: re.sub('boom[\S]*', ' ____ ', string)
Out[106]: 'Metro  ____  on production wow'

In [137]: string2 = 'A loud boom'

In [140]: re.sub('boom[\S]*', ' ____', string2)
Out[140]: 'A loud  ____'

\S*符号匹配零个或多个不是空格的内容。

要使用相同数量的下划线替换文本,请指定lambda回调而不是替换字符串:

re.sub('boom[\S]*', lambda m: '_' * len(m.group(0)), string2)