gpt4 book ai didi

javascript - 字符串不会使用正则表达式分割

转载 作者:行者123 更新时间:2023-12-02 21:47:18 24 4
gpt4 key购买 nike

如代码片段中所示,我有一个正则表达式应该识别任何空行。 (我知道我可以做/n/n,但这不符合我的目的)。我已经在文字编辑器中对其进行了测试,并且在使用查找工具时它会拾取每个新行。但在 JS 中,我仍然得到整个文件。我在这里缺少什么?

const mockData = `This is some fake data
with multiple sentences

and line breaks`;

const newArr = mockData.split(/^\s*$/);

console.log(newArr[0]);

最佳答案

您有一个多行字符串,但没有使用 m (多行)标志。如果没有它,^$ 会匹配整个字符串的开头/结尾,因此只有在整个字符串组成时才进行拆分空白:

//multiline - all whitespace
const mockData = `

`;

const newArr = mockData.split(/^\s*$/);

console.log(newArr);

使用 m 标志,^$ 字符会匹配每行的开始/结束。因此,现在正则表达式可以分割空行或由换行符组成的行:

const mockData = `This is some fake data
with multiple sentences

and line breaks`;

const newArr = mockData.split(/^\s*$/m);

console.log(newArr);

如果您打算在换行符 空行处进行拆分,不留空白,那么您可以完全避开 ^$ 字符,因为他们实际上更麻烦。引擎可能会在换行符之前进行分割,因为这是行 $ 的结尾。因此,不要试图用更多的正则表达式来解决这个问题,而是在空格+换行符或换行符+空格上进行分割。

const mockData = `This is some fake data
with multiple sentences

and line breaks`;

const newArr = mockData.split(/\s*[\r\n]+|[\r\n]+\s*/);

console.log(newArr);

有了这个,您不需要使用多行标志,因为您永远不会使用它引入的行为。

另外,我应该注意 [\r\n]+ 对我来说是一个轻微的作弊。行尾字符要么是 \r\n,要么只是 \n,您很可能永远不会遇到简单的 \r。然而,正确的正则表达式是 \r?\n 我觉得很难看,特别是如果你尝试重复它 - (\r?\n)+ 。字符类稍微不准确,但绝不会对准确性产生任何影响。

关于javascript - 字符串不会使用正则表达式分割,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60222809/

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