尝试使用负正向替换所有与模式不匹配的字符串:
regexPattern = '((?!*' + 'word1|word2|word3' + ').)*$'
mytext= 'jsdjsqd word1dsqsqsword2fjsdjswrod3sqdq'
return re.sub(regexPattern, "P", mytext)
#Expected Correct Output: 'PPPPPPword1PPPPPPword2PPPPPword3PPP'
#BAD Output: 'jsdjsqd word1dsqsqsword2fjsdjswrod3sqdq'
我试过这个,但不起作用(字符串保持不变)。 如何修改?(认为这是相当困难的regex)
你可以用
参见IDEONE demo
regex是
(word1|word2|word3)|.
:(word1|word2|word3)
-要么是word1
,要么是{|
-或者。。。在.
-任何字符(包括换行符re.S
DOTALL模式已打开)参见regex demo
您可以使用两个阶段的方法:首先,将与匹配的字符替换为某些特殊字符,然后将其用作掩码来替换所有其他字符。在
当然,除了
X
之外,您可能需要选择一个在原始字符串中没有出现的不同字符。在相关问题 更多 >
编程相关推荐