正则表达式捕获两个数字之间的第一个字符串
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
【讨论】:
以上是关于正则表达式捕获两个数字之间的第一个字符串的主要内容,如果未能解决你的问题,请参考以下文章