假设我有一个字符串:
original_string = "(white || black) && (blue || yellow)"
然后我用文本“替换”替换每个单词,方法是:
new_string = re.sub(r'[a-zA-Z0-9_]+', "replace", original_string)
所以我回来了:
"(replace || replace) && (replace || replace)"
这很好用。但我也希望得到相同的结果,即使 original_string 在单词之间包含空格(或者即使没有)。
例如:
original_string = (light pink || pink) && (very dark brown || blue)
我还是想回去:
"(replace || replace) && (replace || replace)"
我看到其他人问过这个问题,但是当我尝试这些解决方案时,我没有得到正确的替换(通常在维护括号方面存在一些问题)。我已经尝试过的一些事情是:
new_string = re.sub(r'[? \w+ ?]+', "replace", original_string)
new_string = re.sub(r'[\w+( \w+)*$]+', "replace", original_string)
但是这些都没有给出预期的结果。有什么建议吗?
最佳答案
尝试以下操作:
new_string = re.sub(r'\w[\w\t ]*\w|\w', "replace", original_string)
\w
等价于[a-zA-Z0-9_]
,所以[\w\t ]
会匹配单词字符、制表符和空格。所以这个正则表达式的意思是“匹配一个单词字符,后跟任意数量的单词字符或空白字符,然后是一个单词字符,或者匹配一个单词字符”。这样您将匹配单词之间的空格而不是单词前后的空格。
关于python - 可选忽略字符串中的空格(来自字符集)正则表达式 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17113062/