如何编写正则表达式提取点或连字符后首次出现的数字?
解决方法
你要的正则表达式可以写成:(?<=[.-])\d+
正则说明:
(?<=[.-]):这是正向零宽断言,用来匹配前面是**点(.)或者连字符(-)**的位置,确保提取的数字紧跟在这两个符号之后。\d+:匹配连续的一个或多个数字,正好对应你需要提取的可变数字部分。
匹配验证:
把这个正则用到你的几个示例上,结果完全符合预期:
- Q29775.3-16-F4 → 提取出
3 - A12345-03-C1 → 提取出
03 - B09091-03 → 提取出
03 - C22221-03D5 → 提取出
03
你之前用的(?<=\-).*?(?=-)之所以不行,是因为它只能匹配两个连字符之间的内容,既没法处理点(.)后面的数字,也没法应对没有后续连字符的情况(比如第三个示例)。
内容的提问来源于stack exchange,提问作者Kieran
相关产品推荐
相关产品推荐

