英语HTML代码常用量词m,n}出现次数没有上限
表2-2 常用量词
常用量词
{m,n} 等价形式
阐明
{0,}
它可能会出现,也可能不会出现。 出现次数没有上限。
{1,}
至少出现一次,出现次数没有上限
{0,1}
最多出现一次,也可能根本不出现
在实际应用中,很多情况下只需要表达这三种含义,因此常用量词的使用频率高于{m,n},下面对此进行解释。
众所周知,有些单词在美式英语和英式英语中的写法不同,例如and。 如果要“全取”,则需要第二个l出现“最多出现一次,或者最多不出现”,这就正好了。 使用量词:er,如例 2-4 所示。
例2-4 量词的应用?
re.search(r"^travell?er$", "traveler") != None # => True re.search(r"^travell?er$", "traveller") != None # => True
其实这样的情况还有很多,比如最爱和颜色之和。 除此之外,还有很多其他的应用场景,比如http、https等。 虽然是两个概念,但都是协议名,可以和https?匹配; 另一个例子是表示价格的字符串,可以是 100 或 ¥100。 用¥?100来匹配。
量词也广泛用于解析 HTML 代码。 HTML是一种“标签语言”,其中包含各种标签(tags),例如,
这些标签的名称不同,但形式是相同的:从末尾开始,中间有多个字符。 “几个”表示长度不确定,但不能为0(不是合法标签),也不能为>字符。 如果想用正则表达式匹配所有标签,就需要用[^>]+来匹配中间的“几个字符”,所以整个正则表达式就是]+>。 程序如例2-5所示。
例2-5 量词+的应用
re.search(r"^<[^>]+>$", "") != None # => True re.search(r"^<[^>]+>$", "") != None # => True re.search(r"^<[^>]+>$", "<>") != None # => False
同样,您也可以使用正则表达式来匹配双引号字符串。 不同之处在于双引号字符串中两个双引号之间不能有任何字符。 "" 也是一个完全合法的双引号字符串。 应使用量词*,这样整个正则表达式就变成“[^”] *”,过程见例2-6。
例2-6 量词*的应用
re.search(r"^\"[^\"]*\"$", "\"some\"") != None # => True re.search(r"^\"[^\"]*\"$", "\"\"") != None # => True
注意:字符串中的双引号需要转义,写为\"。这在正则表达式中不是要求,但考虑到字符串转义。
量词的使用有很多学问。 不妨再看几个标签匹配的例子:标签大致可以分为开放标签和关闭标签,比如开放标签和关闭标签; 另一种类型的标签是自标签,例如
。 现在我们来看看分别匹配这三类标签的正则表达式。
开放标签的特征是 ,所以对应的正则表达式为]*>; 注意:因为[^/]必须匹配一个字符,所以“几个字符”的其他部分必须写成[^>]*,否则无法匹配单字符名称的标签,例如 。
关闭标签的特点是,所以对应的正则表达式为]+>;
自标记的特点是 ,所以对应的正则表达式是]+/>。注意:这不是/]+/>。 排除字符组只排除>,不排除/,因为需要确认的只是结尾>之前是否出现/。 如果写成/]+/>,则要求不能出现在标签内部。 /,无法匹配
这种类型的标签。
表 2-3 列出了匹配多种类型标签的表达式。
表2-3 各种标签的搭配
匹配所有标签的表达式
标签分类
表达匹配分类标签
]+>
开放标签
][^>]*>
关闭标签
]+>
自标记
/]+/>
对比表中“匹配所有标签的表情”和“匹配分类标签的表情”,我们可以发现它们的模式相似,但细节上有差异。 也就是说量词有哪些,通过改变字符组和量词,可以精确控制正则表达式可以匹配的字符串范围,从而达到不同的目的。 这实际上是使用正则表达式时的一个基本规则:使用适当的结构(包括字符组和量词)来准确表达您的意图并定义匹配文本。
如果你仔细观察,可能会发现匹配开放标签的表达式也可以匹配自标签:]*>可以匹配
,因为 [^>]* 不排除 / 的匹配。 然后将表达式更改为]*[^/]>,以确保匹配的开放标记不会以/>结尾。
然而,这会带来新的问题:]*[^/]>可以匹配的标签之间有两个[^/]。 上一章提到,独占字符组的意思是“在当前位置,匹配一个未列出的字符”,因此标签中的字符串必须至少包含两个字符,因此无法匹配。
仔细想想,你真正想要表达的是标签内的字符串不能以/开头或以/结尾。 如果字符串仅包含一个字符,则它既是开头又是结尾。 使用两个排除项。 类型字符组显然不合适,而且似乎没有办法解决。 事实上,现有的知识不足以解决这个问题。 第 68 页有此问题的详细解决方案。
大家都在看

中国人影响最深刻的东西:科举制遗留的痕迹

英语HTML代码常用量词m,n}出现次数没有上限

最新各区重点小学排名,看看有你的母校吗?

中国古代选拔官吏的一种制度,你了解汉朝察举制吗?

2023届美术生想考美院的八大独立美院,你了解吗?

扇形面积公式 (期中复习)小学数学知识点总结,建议收藏!

适合小学生的手工制作,赶紧收藏吧!太实用了!

(高考英语)考研英语:定语从句详解及学习方法

艺考不再“易考”已是既成事实,考生少了
