You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用正则表达式选取单词后的第一个数字?

解决提取单词后第一个数字的正则问题

嘿,我来帮你搞定这个小问题!你之前用的(\D)(\d)会把最后一个非数字字符(也就是"number"里的'r')和它后面的第一个数字'1'一起捕获,所以结果会是'r1'。要只拿到那个目标数字'1',有两种实用的方案:

方案1:使用正向回顾后发断言(推荐,更精准)

这个方法能确保我们只匹配紧跟在非数字字符后面的第一个数字,而且不会捕获前面的非数字字符:

(?<=\D)\d
  • (?<=\D):这是正向回顾后发断言,意思是“当前位置的前一个字符必须是非数字”,但这个断言本身不会被捕获到结果里
  • \d:匹配第一个符合条件的数字

举个Python的实现例子:

import re
text = "number1234567890"
result = re.search(r'(?<=\D)\d', text)
print(result.group())  # 输出:1

方案2:通过捕获组提取(兼容旧引擎)

如果你的正则环境不支持后发断言(比如某些旧版本的JS),可以用这个方法:

\D+(\d)
  • \D+:匹配所有连续的非数字字符(也就是整个"number")
  • (\d):捕获后面的第一个数字,我们只需要提取这个捕获组的内容就行

同样用Python举例:

import re
text = "number1234567890"
result = re.search(r'\D+(\d)', text)
print(result.group(1))  # 输出:1

两种方法都能完美得到你想要的结果,选适合你环境的就行~

内容的提问来源于stack exchange,提问作者reynold

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:12:49