gpt4 book ai didi

javascript - 正则表达式 - 用换行符替换第三个点和空格

转载 作者:行者123 更新时间:2023-11-28 17:43:10 25 4
gpt4 key购买 nike

我下面有一个可以正常工作的正则表达式。它的作用是寻找每三个“。”并插入断行...

some_string.replace(/((?:\.[^\.]*){2})\./g, '$1\.<br/><br/>')

所以这段文字:

some test. some other test. other 2 test. test nice text.

变成:

some test. some other test. other 2 test.  
test nice text.

我也需要更改它以查找点和空格。换句话说,目前:

some test. some other test. other 2.3 test. test nice text.

看起来像:

some test. some other test. other 2.
3 test. test nice text.

我需要这个文本看起来像这样:

some test. some other test. other 2.3 test. 
test nice text.

最佳答案

我会做这样的事情:

replace(/(([^.]|\.(?! ))*\. ){3}/g, '$&<br/><br/>')

说明

/([^.]|\.(?! ))*\. /

这与匹配 .字符 ( /[^.]/ ) 或 . 后跟空格的字符 ( /\.(?! )/ )。它继续匹配( /*/ ),直到遇到 . 。后跟一个空格(在本例中 /[^.]//\.(?! )/ 都不匹配,因此继续到 /\. / )。

我使用消极前瞻的原因 /(?! )/是因为我想逐个评价这个 Angular 色。如果我在哪里将其替换为 /[^ ]/比它也匹配“不是空格”字符。这意味着如果我用两个点 Test sentence.. Test 2. 结束一行它匹配 Test sentence..<space>因为第二个点包含在 /\.[^ ]/ 中,因此已经过去了。

/{3}/确保该组匹配 3 次。

'$&<br/><br/>'将用其自身替换整个匹配项,后跟 2 个换行符。

注意

我正在使用捕获组,尽管我没有使用它们。如果您喜欢使用非捕获组,您可以安全地将所有捕获组替换为非捕获组。

编辑

有关更具可读性的解决方案,请参阅 ctwheels answer 。这与此完全相同,但使用了惰性解决方案。请记住,惰性正则表达式在大文本上使用时通常会慢一些(我还没有测试两者的速度)。但如果可读性更重要,我会选择他的解决方案。

关于javascript - 正则表达式 - 用换行符替换第三个点和空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47436203/

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