gpt4 book ai didi

javascript - 用于使用环视删除空行的正则表达式

转载 作者:行者123 更新时间:2023-11-30 13:55:10 24 4
gpt4 key购买 nike

当目标是上下文的开始时,这个匹配将失败

let txt = `「呀啊,居然能見到比自己還年輕的母親,時空穿梭真是恐怖呀」

「哈,哈……」`;

console.dir(txt.match(/(?<=^[「『][^\n]+[』」])\n\n(?=[「『][^\n]+[』」]$)/gm));

但是如果在开头添加一个换行符,匹配就可以了

let txt = `
「呀啊,居然能見到比自己還年輕的母親,時空穿梭真是恐怖呀」

「哈,哈……」`;

有人知道正则表达式的哪一部分是错误的吗?或者这是 (?<=)限制?

无论如何让它可以只用一个正则表达式匹配它并且仍然使用(?<=)


我的环境支持lookBehind ,我的一些其他规则需要检查prev,所以我希望可以通过lookBehind解决这个问题。和 lookAhead


一个正则表达式是平均的,不要使用 2 个或更多正则表达式来处理这个

男性

    [/(?<=^[「『][^\n]+[』」])\n\n(?=[「『][^\n]+[』」](?:\n|$))/, '\n'],

[/(?<=^[「『][^\n]+[』」])\n\n(?=[「『][^\n]+[』」]$)/gm, '\n'],

代码

let txt = `「呀啊,居然能見到比自己還年輕的母親,時空穿梭真是恐怖呀」

「哈,哈……」

「呀啊,居然能見到比自己還年輕的母親,時空穿梭真是恐怖呀」

「哈,哈……」`;

console.dir(txt.replace(/(?<=^[「『][^\n]+[』」])\n\n(?=[「『][^\n]+[』」]$)/gm, '\n'));

预期输出是

「呀啊,居然能見到比自己還年輕的母親,時空穿梭真是恐怖呀」\n「哈,哈……」\n「呀啊,居然能見到比自己還年輕的母親,時空穿梭真是恐怖呀」\n「哈,哈……」

真正的输出是(在 node.js 12 中)

「呀啊,居然能見到比自己還年輕的母親,時空穿梭真是恐怖呀」\n\n「哈,哈……」\n「呀啊,居然能見到比自己還年輕的母親,時空穿梭真是恐怖呀」\n「哈,哈……」

最佳答案

您不需要断言,因为它们是一次性使用的。
你不能在全局上下文中使用它们,因为你同时使用它们
锚定在它们 ^$ 中。

因此,它们是无用的。
要区分换行符,只需添加捕获组即可。
另外,不要在字符类中使用 Unicode 字符,你可以制作一个
错了一天。

就像我会做的那样......

/^[\u300c\u300e][^\r\n]+[\u300f\u300d](\s*\r?\n\s*\r?\n\s*)[\u300c\u300e][^\r\n]+[\u300f\u300d]$/

展开

 ^ 
[\u300c\u300e]
[^\r\n]+
[\u300f\u300d]
( # (1 start)
\s*
\r? \n \s*
\r? \n \s*
) # (1 end)
[\u300c\u300e]
[^\r\n]+
[\u300f\u300d]
$

关于javascript - 用于使用环视删除空行的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57437993/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com