正则表达式以匹配不带点号的数字(“。”)

【字号: 日期:2024-02-29浏览:26作者:雯心
如何解决正则表达式以匹配不带点号的数字(“。”)?

要匹配之后#不带点的任何数字,请使用

(?<=#)d++(?!.)

这++是一个所有格量词,它将使正则表达式引擎仅(?!.)在最后一个匹配的数字之后才检查前瞻,并且如果后面有一个点,则不会回溯。因此,如果在数字块的最后一位数字之后有一个数字,则整个比赛将失败。

参见正则表达式演示

为了匹配整行并将数字放入捕获组#1:

.*#(d++)(?!.).*

请参阅此正则表达式演示。或没有前瞻性的版本:

^.*#(d++)(?:[^.rn].*)?$

参见另一个演示。在最后一个版本中,数字块只能跟随一个 可选 字符 序列,该字符不是a .,CR和LF,其后是除换行符((?:[^.rn].*)?)外的任何0+字符,然后是字符串($)的末尾。

解决方法

我有一串

字符串1 (不包括引号)->“我的车号是# 8746253 ,这实际上很酷”

条件-数字8746253可以是任意长度,并且-数字也可以紧跟在行尾。

我要分组 8746253 ,不应在其后加上点“”。我努力了,

。#( d +)[^。]。

这可以肯定地得到我的数字,但是即使有一个点也可以匹配,因为[。^]将匹配数字的最后一位(例如,在下面的情况下为 3

字符串2 (不包括引号)->“地球距离# 8746253.Kms ,非常远”

我只想匹配 字符串1 类型,而不匹配 字符串2 类型。

相关文章: