【问题标题】:Regex everything before three dots正则表达式三个点之前的所有内容
【发布时间】:2019-12-16 17:47:38
【问题描述】:

我有一个正则表达式,它在一个点(和一些其他标点符号)之后分割一个字符串(在 javascript 中)并在此之前获取所有内容。 当有3个连续点时,他分裂了3次。我希望正则表达式仅在最后一个连续点之后拆分。

这是当前的正则表达式:/(?<=[.,?!])/

现在: 第一句。|第二句。|.|.|

期望的结果: 第一句。|第二句……|

示例: https://regex101.com/r/Ld63r8/1

【问题讨论】:

  • 尝试匹配,text.match(/[^.,?!]+[.,?!]+/g),见demo
  • 是的,这样效果更好。但是当最后一句话没有以标点符号结尾时,那句话就丢失了。

标签: javascript regex


【解决方案1】:

您可以匹配您需要使用的子字符串

 text.match(/[^.,?!]+[.,?!]*/g)

请参阅regex demo

模式详情

  • [^.,?!]+ - 除了 .,?! 之外的 1 个或多个字符
  • [.,?!]* - 0 个或多个 .,?! 字符。

JS 演示:

var text = "This is match one. This is the second, and the third? I want this to be the fourth and last...";
console.log(text.match(/[^.,?!]+[.,?!]*/g));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-29
    • 1970-01-01
    相关资源
    最近更新 更多