gpt4 book ai didi

regex - 如果后面没有 AND 前面有单个字符,则匹配点/句点

转载 作者:行者123 更新时间:2023-12-01 10:22:25 27 4
gpt4 key购买 nike

所以我知道我需要使用前瞻和后视的东西,但我开始失去理智。

因此,您能否提供一个示例,并解释其含义。

我需要匹配以下序列中的点,但不匹配各个字符之间的点。

this.is.a.sentence.e.g.

当删除匹配的点时,您应该留下:

this is a sentence e.g

答案需要在各种不同的正则表达式引擎中工作,因此首选通用的东西,但如果它更容易,我相信我可以从基于 .NET 的引擎中解决。

最佳答案

Lookbehinds 没有得到广泛的支持,你的要求让你很难不使用它们。也许高级正则表达式大师可以提供不使用它们的解决方案,但现在我所拥有的是:

(?:        # do not capture
^ # anchor to start of line
| # alternation
(?<= # lookbehind
[^.]{2} # two non-period characters
)
)
\. # a literal period
| # alternation
\. # a literal period
(?: # do not capture
$ # anchor to end of line
| # alternation
(?= # lookahead
[^.]{2} # two non-period characters
)
)

本质上,这会进行两次交替检查:一个句点之前是行首两个非句点字符, 句号后跟行尾 两个非句号字符。

这适用于您的特定示例:http://rubular.com/r/3ueTN37Smh

您也可以通过这种方式进行替换:

s/(^|[^.]{2})\.|\.($|[^.]{2})/\1 \2/

这会捕获前面或后面的两个字符,并将它们作为匹配的一部分插入回去。它更简单并且可能适用于更多语言。

关于regex - 如果后面没有 AND 前面有单个字符,则匹配点/句点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21034027/

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