除三个句点(省略号)外的字母周围句点的正则表达式

Posted

技术标签:

【中文标题】除三个句点(省略号)外的字母周围句点的正则表达式【英文标题】:Regex for period around letters except for three periods (ellipsis) 【发布时间】:2021-10-20 03:57:38 【问题描述】:

我正在尝试编写一个正则表达式来捕获文本中间的句点(like.this)。 我已经为数字和引号等写了一些例外,但我不知道如何让它在句子中间允许三个句点(比如......这个)。

以下内容不应匹配:

." .“ 不...匹配 7.30

以下应该是匹配的:

is.match

Atm 我的正则表达式如下所示: (\.[^ 0-9."“])

希望有人可以帮助我,因为我真的被困住了。

亲切的问候

编辑让自己更清楚

解决方案

最终使用了这个https://regex101.com/r/NcKJxj/1

(?<=\pL)(?:\.1,2|\.4,)(?=[^ 0-9."“]\pL)

【问题讨论】:

^\w+\.\.\.\w+$ 也许你可以使用\.(?!(?<=\pL.)\pL)(\.[^ 0-9."“]) 模式是怎么回事? 【参考方案1】:

使用此模式(\.[^ 0-9."“])不匹配.".“则表示相反,匹配.后跟任何未在字符类中列出的char。

如果您不想匹配 ... 但确实想匹配 1、2 或 4+ 个点:

(?<=\pL)(?:\.1,2|\.4,)(?=[^ 0-9."“]\pL)

模式匹配:

(?&lt;=\pL) 正面向后看,向左断言任何字母 (?:\.1,2|\.4,) 匹配 1、2 或 4+ 个点 (?=[^ 0-9."“]\pL) 断言字符类中未列出的任何字符,然后匹配任何字母

.NET Regex demo

【讨论】:

我写的很笨,对不起。我已经编辑了帖子,以便更清楚地了解我在寻找什么。 我想匹配被字母包围的点(is.match)。重要的是,它不匹配任何其他字符。我有一个 regex101 的链接,我正在尝试在这里工作:regex101.com/r/Q6HrHv/2 它应该只匹配“dette.er” 我认为你可以匹配一个点,而不是一个点,并且断言右边没有列出的任何字符(?&lt;!\.)\.(?=[^ 0-9."“])regex101.com/r/kXXAJu/1 我想我已经找到了一种方法:regex101.com/r/Q6HrHv/9 你有“更清洁”的解决方案吗,否则我会选择这个:D 是的,没错!非常感谢您的帮助:D

以上是关于除三个句点(省略号)外的字母周围句点的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式基础知识

想要通过任何字母数字和下划线、破折号和句点

句点、单词和冒号的正则表达式

正则表达式删除所有(非数字或句点)

C ++ 11正则表达式匹配一个不以句点结尾的完整单词?

使用 Python 正则表达式将字符串除以换行符或句点