正则表达式捕获两个数字之间的第一个字符串

RegEx Capture First String between Two Numbers

正在尝试提取数字之间的第一个匹配字符串: 例如:

testsfa13.4extractthis8488.9090testssffwwww

ajfafs-sss133.6extractthis887878.222testtest522252.9thismore

到目前为止我有以下内容:

[\d](.*?)[\d]

但是,匹配包括捕获组末尾的数字?任何建议表示赞赏。谢谢。

如果要提取第一个匹配项,可以从锚点 ^ 开始,匹配除数字 \D* 之外的任何字符,然后匹配带有可选小数部分的数字。

^\D*\d+(?:[.,]\d+)*(\D+)\d
  • ^ 字符串开头
  • \D* 匹配除数字以外的任何字符 0 次以上
  • \d+(?:[.,]\d+)* 匹配 1+ 个数字并可选择重复 ., 和 1+ 个数字
  • (\D+) 捕获第 1 组,匹配除数字以外的任何字符 1 次以上
  • \d匹配一个数字

Regex demo

防止越过换行边界:

^[^\d\n\r]*\d+(?:[,.]\d+)*([^\d\n\r]+)\d

Regex demo

尝试\d([A-Za-z]+)\d并从返回的对象中获取第一个值

https://regex101.com/r/v61exp/1