You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Perl正则表达式匹配属性中缺失的开头或结尾双引号

核心正则及解决方案

针对你明确的规则条件(属性值仅含字符、无空格无特殊符号、开头引号前必为等号=、单行支持多属性匹配),可直接使用以下Perl正则匹配缺失开头/结尾引号的场景:

/(?<==)(?!")([^"\s>]+)|(?<==)"([^"\s>]+)(?=[\s>])/g

匹配逻辑说明

  • 前半段(?<==)(?!")([^"\s>]+):匹配缺失开头引号的属性值
    • 反向断言前面是等号=,正向断言下一个字符不是引号",提取连续的非引号、非空格、非标签结束符>的内容,即为缺开头引号的属性值
  • 后半段(?<==)"([^"\s>]+)(?=[\s>]):匹配缺失结尾引号的属性值
    • 反向断言前面是等号=,匹配到开头引号"后提取属性值,正向断言后续是空格或者标签结束符>,说明属性值已结束但无结尾引号

一键补全引号的替换代码

Perl中可以直接用正则替换一步补全两种异常场景:

$content =~ s/(?<==)(?!")([^"\s>]+)|(?<==)"([^"\s>]+)(?=[\s>])/ defined $1 ? "\"$1\"" : "\"$2\"" /ge;
  • 匹配到缺开头引号的场景时$1有值,直接给属性值前后补全双引号
  • 匹配到缺结尾引号的场景时$2有值,给属性值尾部补全双引号即可

测试效果

你提供的异常示例:

<table pgwide="0" id="dvr_config_firmware>
<title>DFR Firmware</title>
<tgroup cols="2">
<colspec colname="col1>
<colspec colname="col2">

经过替换后会自动修正为:

<table pgwide="0" id="dvr_config_firmware">
<title>DFR Firmware</title>
<tgroup cols="2">
<colspec colname="col1">
<colspec colname="col2">

内容的提问来源于stack exchange,提问作者JennyP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 06:54:01