问问题
160 次
4 回答
0
您可以将其与:
.*(?<!\.)\.(?!\.)(?=(?:[^.]+|\.{3})*(?:\.{3}|…)$)
或者更换
(?<!\.)\.(?!\.)(?:[^.]+|\.{3})*(?:\.{3}|…)$
带一个.
。
于 2013-06-11T10:07:37.000 回答
0
我想我已经想出了一个适合我的解决方案。感谢之前回答的每个人,但这个表达式似乎可以满足我的需要,并且执行起来不像其他一些答案那么慢。它还考虑了其他句子终止标点符号,例如!
or?
而不仅仅是.
。
(.*([^\.](?=\.|\?|!)(?!\.\.\.)).)
这个 get 是最后一个句子终止字符(用前瞻定义)。在这种情况下,它们是?
,!
并且.
后面没有...
。这也解决了省略号字符问题,因为它实际上是一个句子终止白名单。这个表达式成功地找到了最大的带有闭包的文本块。
于 2013-06-11T10:32:22.927 回答
0
您可以[^.]*(?:\.{3}|…).*
用空字符串替换以获得所需的结果。
例如:
result = Regex.Replace(input, "[^.]*(?:\\.{3}|…).*", "")
于 2013-06-11T09:12:04.247 回答
0
用这个:
result = Regex.Replace(input, "(.+\.).+(?:\.{3}|…)\s*", "$1")
编辑:
请改用此正则表达式:
(.+[^.]\.)(?:(?:[^.]{2})|$)
于 2013-06-11T09:16:12.437 回答