javascript - Node.js 中正则表达式无法匹配文本的问题
天蓬老师
天蓬老师 2017-04-10 15:57:37
[JavaScript讨论组]

有一个正则:

^    description(?s).*?(?=^    name:\n)

我使用的escape函数:

RegExp.escape= function(s) {
    return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
};

在程序中,将其escape成如下形式:

/\^    description\(\?s\)\.\*\?\(\?=\^    name:\\n\)/g

我要匹配的文本如下:

365230:
    basePrice: 2415.0
    description:
        de: Ultraleichte Legierung, die die maximale Stärke der Dropsuitpanzerung
            steigert, ohne dabei die Bewegungsgeschwindigkeit einzuschränken.
        en: Ultra-light alloy that increases the maximum strength of dropsuit armor
            without affecting movement speed.
        es: Una aleación ultraligera aumenta la fuerza máxima del blindaje de los
            trajes de salto sin afectar a su velocidad de movimiento.
        fr: Alliage ultra-léger qui augmente la force maximale de l'armure de la combinaison
            sans affecter la vitesse de déplacement.
        it: Lega leggerissima che aumenta la solidità massima della corazza dell'armatura
            senza penalizzare la velocità di movimento.
        ja: 運動速度に影響を及ぼすことなく降下スーツのアーマーの最大強度を上げる超軽量の合金。
        ru: Сверхлегкий сплав, который увеличивает максимальную прочность брони скафандров
            без ущерба скорости передвижения.
    groupID: 351121
    marketGroupID: 365245
    name:
        de: Verbesserte Ferroscale-Platten
        en: Enhanced Ferroscale Plates
        es: Placas de ferroescamas mejoradas
        fr: Plaques Ferroscale optimisées
        it: Lamiere Ferroscale perfezionate
        ja: 強化型ファロースケールプレート
        ru: Улучшенные пластины 'Ferroscale'
    portionSize: 1
    published: true
    volume: 0.01

目标是将以下内容从文本中去掉:

    description:
        de: Ultraleichte Legierung, die die maximale Stärke der Dropsuitpanzerung
            steigert, ohne dabei die Bewegungsgeschwindigkeit einzuschränken.
        en: Ultra-light alloy that increases the maximum strength of dropsuit armor
            without affecting movement speed.
        es: Una aleación ultraligera aumenta la fuerza máxima del blindaje de los
            trajes de salto sin afectar a su velocidad de movimiento.
        fr: Alliage ultra-léger qui augmente la force maximale de l'armure de la combinaison
            sans affecter la vitesse de déplacement.
        it: Lega leggerissima che aumenta la solidità massima della corazza dell'armatura
            senza penalizzare la velocità di movimento.
        ja: 運動速度に影響を及ぼすことなく降下スーツのアーマーの最大強度を上げる超軽量の合金。
        ru: Сверхлегкий сплав, который увеличивает максимальную прочность брони скафандров
            без ущерба скорости передвижения.
    groupID: 351121
    marketGroupID: 365245

最终效果如下:

365230:
    basePrice: 2415.0
    name:
        de: Verbesserte Ferroscale-Platten
        en: Enhanced Ferroscale Plates
        es: Placas de ferroescamas mejoradas
        fr: Plaques Ferroscale optimisées
        it: Lamiere Ferroscale perfezionate
        ja: 強化型ファロースケールプレート
        ru: Улучшенные пластины 'Ferroscale'
    portionSize: 1
    published: true
    volume: 0.01

在程序中检验正则是否匹配:

re1.test(data);

返回false

是哪里出现了问题?

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(1)
大家讲道理

你的正则没有匹配到目标文本


随便写个吧

var reg = /(?:\t| )*description:(?:\r\n|\r|\n)((?:\t| )*(?:\w+:)?.*(?:\r\n|\r|\n))*?(?=(?:\t| )*name:)/g;
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号