匹配以特定词开头且位于特定词之间的字符串的正则表达式
正则匹配方案:捕获以特定词开头且位于指定边界间的字符串
没问题,我来帮你搞定这个正则需求!先把你提供的原始HTML字符串贴出来方便参考:
你的需求是匹配以特定词开头,同时被包裹在两个指定边界之间的字符串,我分通用模板和针对你这个示例的具体实现来讲解:
1. 通用正则模板
先明确几个核心参数,你可以根据实际需求替换:
LEFT_BOUNDARY:你指定的左边界(比如示例里的链接开标签结尾部分)START_WORD:要求子串必须以这个词开头(比如示例里的Aujourd'hui)RIGHT_BOUNDARY:你指定的右边界(比如示例里的VDM)
通用的正则结构是:
LEFT_BOUNDARY(START_WORD.*?)RIGHT_BOUNDARY
- 细节说明:
.*?是非贪婪匹配,能确保不会匹配到超过右边界的内容,避免把后面的无关内容也抓进来- 如果你的边界或关键词里包含正则特殊字符(比如
.、*、(),记得用反斜杠\转义,比如要匹配.就得写成\.
2. 针对你示例的具体实现
结合你提供的HTML字符串,我们把参数具体化:
- 左边界:匹配整个a标签的开标签部分,可以用
<a href="[^"]+">([^"]+用来匹配任意不包含双引号的链接地址) - 开头关键词:原字符串里是HTML实体
Aujourd’hui,如果是处理原始HTML就用这个;如果已经把实体转成了普通文本(比如’代替’),就用Aujourd'hui - 右边界:
VDM(注意前面的空格)
场景1:处理原始HTML字符串(带实体)
直接匹配原始HTML里的内容,正则写法:
<a href="[^"]+"> (Aujourd’hui.*?) VDM
这个正则会精准捕获从Aujourd’hui开始,到 VDM结束的完整子串,结果就是:Aujourd’hui, moment à la fois câlin et torride avec mon copain. On se fait un petit délire BDSM et, me retrouvant à 4 pattes, il m'attache. Après cette session où on en a fini, il reçoit un appel urgent et part. En me laissant comme ça.
场景2:处理转义后的纯文本(实体已转换)
如果已经把HTML实体转换成了正常的法语字符(比如’→’,à→à),正则可以简化成:
<a href="[^"]+"> (Aujourd'hui.*?) VDM
3. 实用调整技巧
- 如果边界前后的空格不确定(比如有时候多空格、有时候少),可以用
\s*匹配任意空白字符,比如左边界改成<a href="[^"]+">\s*,右边界改成\s*VDM - 如果只想捕获开头关键词之后到右边界之前的内容,不用关键词本身,可以调整分组:
这样分组1就是你要的内容,不会包含<a href="[^"]+"> Aujourd’hui(.*?) VDMAujourd’hui本身 - 不同编程语言的正则语法略有差异(比如Python的
re、JavaScript的正则),但核心逻辑完全一致,你可以根据所用语言微调
内容的提问来源于stack exchange,提问作者Arnauld Alex
相关产品推荐
相关产品推荐

