首页 > 解决方案 > 正则表达式匹配句点但不在数字之间

问题描述

我想要一个正则表达式来匹配一个字符串,该字符串包含一个从前一个时期到下一个时期的单词,但是如果一个带句点的数字介于两者之间,我希望它匹配下一个时期。

所以在:

你好。这是一个例子。这是一个例子。这是一个 4.815 示例。

我想匹配:

This is an example
This is another example.
This is an 4.815 example. 

现在我有这个正则表达式,但它在“4.815”期间中断

([^.]+)example[^.]*

谢谢!

标签: pythonregex

解决方案


一种选择可能是

[^.]*(?:(?:\.\d)[^.]*)*example[^.]*(?:(?:\.\d)[^.]*)*\.

模式匹配

  • [^.]*(?:(?:\.\d)[^.]*)*匹配除点以外的任何字符,仅当点后跟数字时
  • example从字面上匹配
  • [^.]*(?:(?:\.\d)[^.]*)*匹配除点以外的任何字符,仅当点后跟数字时
  • \.匹配文字点

正则表达式演示

或者没有领先的空白

(?<!\S)[^.]*(?:(?:\.\d)[^.]*)*example[^.]*(?:(?:\.\d)[^.]*)*\.

正则表达式演示


推荐阅读