匹配闭合标签后首字符为小写的HTML <p>标签的正则问题
正则修改方案:匹配Sigil中符合要求的
标签
需求明确
要匹配的是所有HTML <p>标签(无论是否包含属性),且标签闭合符号>之后的第一个字符为小写字母,例如:
- 带属性的目标标签:
<p class="calibre1">all the while I was...</p> - 无属性的目标标签:
<p>all the while I was...</p>
原有正则问题
你提供的正则/<\/?([^p](\s.+?)?|..+?)>[a-z]/无法匹配无属性的<p>标签,因为其分组逻辑未覆盖<p>这种最简标签格式。
修改后的正则方案
使用以下正则即可同时覆盖带属性和无属性的目标标签:
/<p(?:\s[^>]+)?>[a-z]/
如果Sigil支持Unicode正则模式,推荐使用更通用的版本(适配非英文小写字母):
/<p(?:\s[^>]+)?>\p{Ll}/u
正则逻辑说明
<p:精准匹配<p标签的起始部分(?:\s[^>]+)?:非捕获可选分组,匹配标签的属性部分:\s:匹配属性前的空格(仅当存在属性时出现)[^>]+:匹配任意非>的字符,即属性内容?:表示该分组可省略,对应无属性的<p>标签
>:匹配标签的闭合符号[a-z]/\p{Ll}:匹配>之后的第一个小写字母(\p{Ll}为Unicode小写字母通用匹配)
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

