Python中关于正则表达式的问题,再次请教
import re
p = re.compile(r'(\b\w+)\s+\1')
a = p.search('Paris in the the spring').group() print(a) 代码如上,执行结果是:the the 在 Python3 中使用原始字符串写正则表达式,\b 在这里我的理解是“单词”边界,也就是 Paris in the the spring 的开头和结尾位置,\w 是匹配任意 Unicode 单词字符,+是执行至少一次\w,然后再是匹配空白字符(\s 的意思),+是执行至少一次\s,\1 是再一次执行前面的所有匹配。 这里我想问的是为什么是从 the 开始匹配,而不是从 Paris 开始。 如果是从 the 开始,那结果为什么不是 “ the 空格 the 空格” 即 “ the the ” 而是“ the 空格 the ” 即 “ the the ”
Python中关于正则表达式的问题,再次请教
最后一个问题是因为,你写的是
(\b\w+)\s+\1
而不是
(\b\w+\s+)\1
所以是"the the"
我无法理解你的问题
整个正则是括号匹配到的在 s+之后再匹配一次,你字符串里面就只有 the 空格 the 符合。为什么不是 the 空格 the 空格,你把第一个右括号移到+s 后面应该就是了。
这个东西 你应该去菜鸟教程看看,我就在那里学的,这个叫反向引用
\b 是正则表达式规定的一个特殊代码(好吧,某些人叫它元字符,metacharacter ),代表着单词的开头或结尾,也就是单词的分界处。虽然通常英文的单词是由空格,标点符号或者换行来分隔的,但是\b 并不匹配这些单词分隔字符中的任何一个,它只匹配一个位置。
http://www.jb51.net/tools/zhengze.html
多谢解惑,明白了!
等我缓过来再看,现在头有点大
百度菜鸟教程 ro 什么的网址
第一个问题:
你用的是 search,而不是 match
第二个问题:
反向引用之前匹配的(\b\w+)中不包含空格
直接 help(re)告诉你所有真相:)


