要匹配之后#不带点的任何数字,请使用
(?<=#)d++(?!.)
这++是一个所有格量词,它将使正则表达式引擎仅(?!.)在最后一个匹配的数字之后才检查前瞻,并且如果后面有一个点,则不会回溯。因此,如果在数字块的最后一位数字之后有一个数字,则整个比赛将失败。
参见正则表达式演示
为了匹配整行并将数字放入捕获组#1:
.*#(d++)(?!.).*
请参阅此正则表达式演示。或没有前瞻性的版本:
^.*#(d++)(?:[^.rn].*)?$
参见另一个演示。在最后一个版本中,数字块只能跟随一个 可选 字符 序列,该字符不是a .,CR和LF,其后是除换行符((?:[^.rn].*)?)外的任何0+字符,然后是字符串($)的末尾。
解决方法我有一串
字符串1 (不包括引号)->“我的车号是# 8746253 ,这实际上很酷”
条件-数字8746253可以是任意长度,并且-数字也可以紧跟在行尾。
我要分组 8746253 ,不应在其后加上点“”。我努力了,
。#( d +)[^。]。
这可以肯定地得到我的数字,但是即使有一个点也可以匹配,因为[。^]将匹配数字的最后一位(例如,在下面的情况下为 3 )
字符串2 (不包括引号)->“地球距离# 8746253.Kms ,非常远”
我只想匹配 字符串1 类型,而不匹配 字符串2 类型。