【问题标题】:Regex matching final occurrence of a pattern正则表达式匹配模式的最终出现
【发布时间】:2014-03-31 03:46:12
【问题描述】:

我正在尝试匹配最终出现的 WWN 模式,如下所示:

addr: 10:00:00:00:c4:a2:42:15
port: 10:00:00:00:c4:a2:42:15
addr: 10:00:00:00:c4:a2:42:16
port: 10:00:00:00:c4:a2:42:16

当我测试这个时:

port: (([0-9a-f]{2}[:-]){7}([0-9a-f]{2}))(?!.*port: ([0-9a-f]{2}[:-]){7}([0-9a-f]{2}))

它只匹配10:00:00:00:c4:a2:42:15。我认为我的正则表达式是非贪婪的,但看起来我仍然缺少一些东西。

【问题讨论】:

    标签: ruby regex


    【解决方案1】:

    . 不匹配换行符。尝试改用[\s\S]

    port: (([0-9a-f]{2}[:-]){7}([0-9a-f]{2}))(?![\s\S]*port: ([0-9a-f]{2}[:-]){7}([0-9a-f]{2}))
                                                ^^^^^^
    

    rubular demo

    【讨论】:

    • 就是这样。谢谢!
    • @CenterOrbit regexr 的问题在于它是一个 Javascript 正则表达式测试器,这是一个 Ruby 问题。两种语言在正则表达式实现上存在一些差异。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-27
    • 1970-01-01
    • 2021-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多