1

I want to get a number after second dot in a string like that : 4.5.3. Some kind of question ? but input string might look like this as well 41.53.32. Some kind of question ? so im aiming for 3 in the first example and 32 in second example.

I'm trying to do it with

(?<=(\.\d\.))[0-9]+ 

and it works on 1st example, but when im trying to add (?<=(\.\d+\.))[0-9]+ it doesn't work at all.

4

5 回答 5

-1

最简单的完整答案可能是这样的:

(?<=^(?:[^.]*\.){2})\d+

如果您完全担心性能,这个会稍微快一点:

^(?:[^.]*\.){2}(\d+)

这将在捕获组 1 中捕获所需的值。

如果您使用的引擎不支持可变长度后视,则需要使用第二个版本。

如果您愿意,可以[^.]\d, 替换以仅匹配数字。

于 2013-11-10T01:18:45.223 回答
-1

如果最后一个数字后面总是有一个点,那么您可以使用以下表达式:

\d+(?=\.(?:[^\d]|$))

这将匹配一个或多个数字\d+,后跟一个点.,然后是不是[^\d]字符串结尾的数字$,即(?=\.(?:[^\d]|$)).

正则表达式 101 演示

于 2013-11-09T22:37:18.293 回答
-1
(?:(?:.*\.)?){2}(\d+)

以下正则表达式应该适用于您的用例。

这里查看

于 2013-11-09T22:43:37.327 回答
-1

如果你使用 PERL 或 PHP,你可以试试这个模式:

(?:\d+\.){2}\K\d+
于 2013-11-09T22:51:30.033 回答
-1
(\d+.\d+.)\K\d+

匹配数字点数字点数字,不选择第一部分作为组。

于 2013-11-09T23:18:56.830 回答