0

如何which is dynamic使用正则表达式从以下字符串中提取第 8 个数字之后的四个数字。

20190715171712904_10008_file_activate_10.20.30.4000233223456_name.unl 

20190715141712904_10008_runco_activate_10.20.30.40_name.unl

从第一个字符串我想要 1717

从第二个字符串我想要 1417

我曾尝试在https://regex101.com/中编写正则表达式查询,即

我试过 ^\d{8}([0-9]{4})$但没有工作。

4

1 回答 1

1

放下$. 它强制表达式在您的 4 位数字之后查找字符串的结尾,但事实并非如此。答案将在第一个子组捕获中。请注意,您也可以使用\d第二个[0-9]

如果您的语言支持后视,您可以将您的数字捕获为主要捕获,而不是子组:

(?<=^\d{8})\d{4}

不过,这对于正则表达式来说确实不是问题 - 将子字符串从索引 4 索引到索引 7,包括(0 索引)在任何语言中都是基本且更快的。

于 2019-10-03T14:38:40.233 回答