除三个句点(省略号)外的字母周围句点的正则表达式
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)
模式匹配:
(?<=\pL)
正面向后看,向左断言任何字母
(?:\.1,2|\.4,)
匹配 1、2 或 4+ 个点
(?=[^ 0-9."“]\pL)
断言字符类中未列出的任何字符,然后匹配任何字母
.NET Regex demo
【讨论】:
我写的很笨,对不起。我已经编辑了帖子,以便更清楚地了解我在寻找什么。 我想匹配被字母包围的点(is.match)。重要的是,它不匹配任何其他字符。我有一个 regex101 的链接,我正在尝试在这里工作:regex101.com/r/Q6HrHv/2 它应该只匹配“dette.er” 我认为你可以匹配一个点,而不是一个点,并且断言右边没有列出的任何字符(?<!\.)\.(?=[^ 0-9."“])
regex101.com/r/kXXAJu/1
我想我已经找到了一种方法:regex101.com/r/Q6HrHv/9 你有“更清洁”的解决方案吗,否则我会选择这个:D
是的,没错!非常感谢您的帮助:D以上是关于除三个句点(省略号)外的字母周围句点的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章