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

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

testsfa13.4extractthis8488.9090testssffwwww

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

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

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

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

【问题讨论】:

    标签: regex string numbers between digits


    【解决方案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

      【讨论】:

        猜你喜欢
        • 2018-03-22
        • 1970-01-01
        • 2020-03-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-08
        • 1970-01-01
        相关资源
        最近更新 更多