Regex 用什么正则表达式来定义粗体数字

Regex 用什么正则表达式来定义粗体数字,regex,Regex,我尝试了\b[0-9]{1,4}\.[0-9]{1,3}\.[0-9]{0,3},但没有找到34.89和23.89 我想要下面文本中的所有数字序列,除了28.72% 34.89 0105.93.10 ghghghh 0105.93.20 ghghhh jjjjjhjj 0105.93.30 jsdfsd iksifsdjfk sdfsdk 0105.93.40ierfgg dfgkdfg dfgolgh 23.89 28.72% 谢谢 Paul这将找到所有由单点分隔的数字组,这些数字后面

我尝试了
\b[0-9]{1,4}\.[0-9]{1,3}\.[0-9]{0,3}
,但没有找到34.89和23.89

我想要下面文本中的所有数字序列,除了28.72%

34.89
0105.93.10  ghghghh
0105.93.20  ghghhh 
jjjjjhjj 0105.93.30 jsdfsd iksifsdjfk sdfsdk
0105.93.40ierfgg dfgkdfg dfgolgh 23.89
28.72%
谢谢


Paul

这将找到所有由单点分隔的数字组,这些数字后面没有
%

(?:\d+\.)+\d+(?!\%)
它要求点的每一侧至少有一个数字。除此之外,它并不关心每组中有多少个数字。至少要求数字中至少有一个点

这也要求每组有2到4位数字:

(?:\d{2,4}\.)+\d{2,4}(?!\%)

你的正则表达式需要有两个点。您需要将最后一个点位序列设置为可选,并且需要排除
%
或另一个数字后面的匹配项(否则
28.72%
中的
28.7
将匹配):


将最后一部分设置为可选

\b[0-9]{1,4}\.[0-9]{1,3}(?:\.[0-9]{0,3})?
你最初的表情需要句号

关于匹配
%
,您的规则不是很明确,所以我做了以下几点:

\b[0-9]{1,4}\.[0-9]{1,3}(?:\.[0-9]{0,3})?(?=[^%\d]|$)

最后一部分是任何非-%非数字字符或行尾的正向前瞻。它也必须是非数字,否则
28.7
将匹配表达式的其余部分,最后一个
2
匹配一个非百分比字符。

为什么不查找
28.72%
?用英语告诉我们您希望作为正则表达式实现的规则。我想查找所有形式为xxx.xx.xx或xxxx.xx或xxx.xx或xxxx.xxx的数字序列,其中数字
xxxx.xx.xxxx
中的x有四位它的最后一个数字序列,你的正则表达式只允许三个。这是故意的吗?这几乎做到了,但它在子字符串示例0105.93.10中找到了模式,生成0105.93.10和93.10,我只想0105.93.10这是一个很好的答案,但在他的示例中,它与结尾处的
.40
不匹配,因为它后面紧跟着“I”,而不是单词boundary@ExplosionPills:啊,是的,谢谢你的注意。我将立即解决此问题。我如何才能只找到0105.93.10而不找到0105.93.10和93。10@Paulute:它不应该同时找到这两个,因为正则表达式通常不会找到重叠的匹配项。你到底在做什么,导致两个匹配被找到?这几乎做到了,但它;在子字符串中查找模式示例0105.93.10生成0105.93.10和93.10,我只希望0105.93.10不应该有子表达式,因为
?:
应该阻止capturingI不希望它查找查找的子字符串,只需移动到下一个查找,例如0105.93.10,而不是0105.93.10105.93.10,05.93.10etc@Paulute,它不会那样做;它只提供完整的匹配项。@Paulute,如果这是您得到的结果,可能是您在程序中使用的正则表达式不正确。这是什么语言?
\b[0-9]{1,4}\.[0-9]{1,3}(?:\.[0-9]{0,3})?(?=[^%\d]|$)