这里的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个空格之间的所有内容替换为新字符串
有没有办法可以做到这一点?如果可能的话,最好根据原始字符串的长度在替换字符串中使用可变长度
答案 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)