man*_*noj 9 java regex eclipse
我有一个字符串
字符串1(不包括引号) - >"我的车号是#8746253,实际上很酷"
条件 - 数字8746253,可以是任意长度
- 数字也可以紧跟一个行尾.
我想分组8746253,后面不应该跟一个点"."
我试过了,
*#(\ d +)[^.].*
这肯定会得到我的数字,但即使有一个点也会匹配,因为[.^]将匹配数字的最后一位(例如,在下面的情况下为3)
字符串2(不包括引号) - >"地球是#8746253.Kms,这是非常远的"
我想只匹配字符串1类型而不匹配字符串2类型.
要匹配任何数字后面#没有点,请使用
(?<=#)\d++(?!\.)
Run Code Online (Sandbox Code Playgroud)
这++是一个占有量词,它将使正则表达式引擎仅(?!\.)在最后一个匹配的数字之后检查前瞻,并且如果之后有一个点则不会回溯.因此,如果在数字块中的最后一个数字后面有一个dit,则整个匹配将失败.
请参阅正则表达式演示
要匹配整行并将数字放入捕获组#1:
.*#(\d++)(?!\.).*
Run Code Online (Sandbox Code Playgroud)
看到这个正则表达式演示.或者没有前瞻的版本:
^.*#(\d++)(?:[^.\r\n].*)?$
Run Code Online (Sandbox Code Playgroud)
看另一个演示.在最后一个版本中,数字块只能跟随一个不是a ,CR和LF 的可选序列,.后跟除了换行符((?:[^.\r\n].*)?)之后的任何0+字符,然后是字符串($)的结尾.