gpt4 book ai didi

ruby - 标点符号模式的正则表达式前瞻/回顾

转载 作者:数据小太阳 更新时间:2023-10-29 08:46:03 28 4
gpt4 key购买 nike

使用 Ruby,我想找到一个正确识别句子边界的正则表达式,我将其定义为以 [.!?] 结尾的任何字符串,除非这些标点符号存在于引号内,如

My friend said "John isn't here!" and then he left.

我目前的不足之处是:

text = para.text.scan(/[^\.!?]+[(?<!(.?!)\"|.!?] /).map(&:strip)

我仔细研究了正则表达式文档,但似乎仍然无法正确理解回溯/先行。

最佳答案

这样的事情怎么样?

/(?:"(?>[^"]|\\.)+"|[a-z]\.[a-z]\.|[^.?!])+[!.?]/gi

演示:https://regex101.com/r/bJ8hM5/2

工作原理:正则表达式将在字符串中的每个位置检查以下内容

  1. “quote”形式的带引号的字符串,可以包含任何内容,直到结束引号。您还可以转义引号,例如 "hell\"o"
  2. 匹配任何字母,然后是一个点,然后是另一个字母,最后是一个点。这是为了匹配您的 U.S. 等特殊情况。
  3. 匹配除标点符号以外的所有其他字符 .?!
  4. 重复直到我们到达一个标点字符。

关于ruby - 标点符号模式的正则表达式前瞻/回顾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28254922/

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