使用正则表达式去掉所有指定字符

如字符串

str1 = 'am I am am am am am pop pop sw sd amw amam wam wwam am'

要求去掉所有am,但是像amam、wam等不需要去除。

考虑:

1 am可能在str1开头。

2 am可能在str1中间。

3 am可能在str1结尾。

4 对于str1中某个单词来说 am又有可能出现在每个单词的开头、中间、结尾。

5 对于要去掉的am来说,要满足几个条件(a) am出现在str1开头并且am后面不能有字母等字符。(b)am出现在除开头的位置,并且这个单词一定以am结尾,且这个单词前边不能有字母等字符。

正则如下:

^am\b|\W+am\b

其中:

^ 匹配字符串的开头。

\W 匹配非字母数字及下划线。

\b 匹配一个单词边界,也就是指单词和空格间的位置。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。

程序验证如下:

    

import re

str1 = 'am I am am am am am pop pop sw sd amw amam wam wwam am'
pattern = r"^am\b|\W+am\b"
result = re.sub(pattern, "", str1)
result = result.strip()
print(result)  # I pop pop sw sd amw amam wam wwam

应用:可以应用这个思想去除list中所有指定值。

你可能感兴趣的:(正则,正则表达式,字符串,regex,python)