Closed. This question needs details or clarity。它当前不接受答案。
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
3年前关闭。
我从
见IDEONE demo
模式分解:
注意如果需要替换所有非字母字符,请使用
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
3年前关闭。
我从
inp = re.sub('[^A-Z]', '', inp)
开始,但是意识到可以删除val = 0
,但是我不想在字符串的开头不删除val = 0
,而在其他情况下则要删除所有非大写字母的字符。我怎么做? 最佳答案
此解决方案用于不知道开头要保护的子字符串的情况。
要在字符串的开头“保护”特定的子字符串并删除其他位置的某些字符,您需要在模式中指定一个替换,其中要保留的部分被捕获组包围。然后,在替换期间,您只需要检查捕获的组是否匹配,如果是,则只需恢复结果中的值即可。否则,替换为空字符串。
import re
inp = "val = 20 MORE @#$TEXT.!!??"
res = re.sub(r'(^val\s*=\s*\d+)|[^A-Z]', lambda m: m.group(1) if m.group(1) else "", inp)
print(res)
见IDEONE demo
模式分解:
(^val\s*=\s*\d+)
-val
在字符串的开头(\s*
)后跟0+空格符号(=
),后跟\d+
随后是0+空格符号,后跟1+数字(^
)。 )|
-或[^A-Z]
-任何非大写字母的字符注意如果需要替换所有非字母字符,请使用
[A-Za-z]
或在正则表达式定义中添加flags=re.I
。关于python - 当某些字符不属于字符串时,如何查找? (正则表达式,Python),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36167408/