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

Posted

技术标签:

【中文标题】正则表达式捕获两个数字之间的第一个字符串【英文标题】:RegEx Capture First String between Two Numbers 【发布时间】:2020-07-01 13:57:44 【问题描述】:

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

testsfa13.4extractthis8488.9090testssffwwww

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

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

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

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

【问题讨论】:

【参考方案1】:

如果您想提取第一个匹配项,您可以从匹配除数字 \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

【讨论】:

【参考方案2】:

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

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

【讨论】:

以上是关于正则表达式捕获两个数字之间的第一个字符串的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式:匹配单个数字重复n次

两个字符串之间的正则表达式匹配,包括那些字符串

如何使用正则表达式读取字符串之间的第一组数字?

在pyspark数据框的列中使用正则表达式捕获两个字符串之间的第一次出现的字符串

正则表达式 - 在逗号之间的序列中捕获下划线之间的数字

正则表达式(re)