python正则表达式对象的sub方法

正则表达式的sub方法使用解释:

textRegex = re.compile(r'Agent (\w)(\w)\w*')  #正则表达式规则1  
temp = 'Agent Alice told Agent Carol that Agent'\  
       ' Eve knew Agent Bob was a double agent.'
# sub函数第一个参数可以是字串也可以是(\1、\2、\3……,表示在替换中输入分组1、2、3……的文本;
# 先从字符串参数temp里找到符合正则表达式规则1的所有字串组合,
# 然后对找到的所有字串组合按照sub函数第一个参数所定义的规则进行替换;
# 最后把以上替换结果按照正则表达式所找到的组合的位置进行最后替换。
textRegex.sub(r'\2***', temp)  

以上程式執行順序解析如下: 1. 先使用正则表达式'Agent (\w)(\w)\w'定义要查找的字符串规则
2. 定义字符串temp
3. 使用正则表达式对象函数方法sub进行字符串替换,替换流程如下:
- 先按照正则表达式'Agent (\w)(\w)\w
'规则找到所有符合规则的字串组合,结果有4个字串:Agent Alice、Agent Carol、Agent Eve、Agent Bob - 因为正则表达式'Agent (\w)(\w)\w'里有两个括号组合,所有需要进一步查找括号组合里的条件,结果为: [('A', 'l'), ('C', 'a'), ('E', 'v'), ('B', 'o')],如果正则表达式里没有括号组合规则,则无需此步骤; - 使用sub函数第一个参数所定义的规则r'\2'对找到的4个字串组合进行替换,r'\2'表示使用正则表达是的第二个括号组合找到的结果以及三个星号,来替换对应的字符串,第一个字串‘Agent Alice’被替换为‘l’,第二个字串‘Agent Carol’被替换为‘a’,第三个字串‘Agent Eve’被替换为‘v’,第四个字串被替换为‘o*’;注意:如果第二步的正则表达式里没有括号组合规则,则sub函数第一个参数所定义的规则里不能有\1、\2、\3……这样的格式,而只能是纯字符串,所定义的纯字符串统一替换第一步所找到的四个字串; - 把以上替换结果,分别再替换到四个字串相应所在的位置,最后得到以下结果:

l*** told a*** that v*** knew o*** was a double agent.  

Wilson

张弛有度、简约不简单