Regex Python正则表达式sub()
因此,我正在学习python,需要有关上述正则表达式的帮助。请更正,但是Regex Python正则表达式sub(),regex,python-3.x,Regex,Python 3.x,因此,我正在学习python,需要有关上述正则表达式的帮助。请更正,但是'\1'用于捕获第一个单词。两个问题: 为什么需要括号 为什么我将上面的行更改为: agentNamesRegex = re.compile(r'Agent (\w)\w*') agentNamesRegex.sub(r'\1****', 'Agent Alice told Agent Carol that Agent Eve knew Agent Bob was a double agent.') A**** to
'\1'
用于捕获第一个单词。两个问题:
agentNamesRegex = re.compile(r'Agent (\w)\w*')
agentNamesRegex.sub(r'\1****', 'Agent Alice told Agent Carol that Agent Eve knew Agent Bob was a double agent.')
A**** told C**** that E**** knew B**** was a double agent.'
(\w)
和\1
的概念。你能帮忙吗?我并没有考虑任何具体的输出,但在spider中尝试了不同的东西,以便更好地了解正则表达式并理解上面的表达式
为什么需要括号
括号用于捕获一组字符。\1
返回第一个捕获的组。在正则表达式r'Agent(\w)\w*”
中,(\w)
周围的括号捕获“Agent”
后面的第一个单词字符,即代理名称的第一个字母。然后将捕获的字母替换回输出中,以代替每个匹配的子字符串的\1
为什么我将上面的行更改为:
agentNamesRegex = re.compile(r'Agent (\w)\w*')
agentNamesRegex.sub(r'\1****', 'Agent Alice told Agent Carol that Agent Eve knew Agent Bob was a double agent.')
A**** told C**** that E**** knew B**** was a double agent.'
该正则表达式正在查找单词“Agent”,后跟空格,后跟8个或更多单词字符。输入字符串中没有与该模式匹配的内容。(你的代理名称都太短了。)如果没有匹配的模式,为什么输出是“爱丽丝代理告诉卡罗尔代理,伊芙代理知道鲍勃代理是双重代理”而不是“没有”。如果模式不匹配,输出不应该为“无”。@Abhi,因为您正在调用
sub
。由于模式没有匹配项,sub
不会进行替换,因此您的输出字符串与输入字符串相同。非常感谢您的帮助!!
agentNamesRegex = re.compile(r'Agent (\w)(\w)(\w)(\w)(\w)(\w)(\w)(\w)\w*')