gpt4 book ai didi

javascript - 如何通过忽略数字句点的标点符号拆分字符串

转载 作者:行者123 更新时间:2023-12-04 08:01:59 31 4
gpt4 key购买 nike

我在 javascript 中使用以下代码将字符串拆分为短语。

var result = str.match( /[^\n\.!\?\;:]+[\n\.!\?\;:]+/g );
let elements = result.map(element => element.trim());
elements = elements.filter(function (el) {return el != null && el != "";});
它工作正常。我的问题是当字符串中有数千个数字用点标记时,有些人使用像 1.500。如果标点符号后跟一个空格,如何改变它以便它只分隔短语。

最佳答案

您可以使用

/(?:[^\n.!?;:]|[\n.!?;:](?!\s))+[\n.!?;:]+/g
regex demo .关键是您要么匹配除您选择的标点符号之外的任何字符,要么匹配一个不跟空格的标点符号,一次或多次,然后匹配一个或多个您选择的标点符号。
详情 :
  • (?: - 非捕获组的开始:
  • [^\n.!?;:] - 除了换行符之外的任何字符,. , ! , ? , ;:

  • | - 或者
  • [\n.!?;:](?!\s) - 换行,. , ! , ? , ;:后面没有空格

  • )+ - 一次或多次
  • [\n.!?;:]+ - 一个或多个换行符,. , ! , ? , ;:字符。

  • 查看 JavaScript 演示:

    var s = 'It works ok. My problem is when the string has numbers in the thousands marked with a dot that some people use like 1.500. How can alter this so that it only separates the phrases if the punctuation is followed by a space.';
    var rx = /(?:[^\n.!?;:]|[\n.!?;:](?!\s))+[\n.!?;:]+/g;
    console.log( s.match(rx) );

    关于javascript - 如何通过忽略数字句点的标点符号拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66421747/

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