登录
首页 >  Golang >  Go问答

正则表达式的前向和后向匹配

来源:stackoverflow

时间:2024-02-23 21:09:23 466浏览 收藏

目前golang学习网上已经有很多关于Golang的文章了,自己在初次阅读这些文章中,也见识到了很多学习思路;那么本文《正则表达式的前向和后向匹配》,也希望能帮助到大家,如果阅读完后真的对你学习Golang有帮助,欢迎动动手指,评论留言并分享~

问题内容

所以我有这个正则表达式:(?:\/p\/|$)(?:[^\/]*)(?<=-)(.*)(?=\/) p>

我希望它从宜家链接中提取 id,但它似乎不适用于 Go。有人能帮我吗?或者有没有一个工具可以直接转换它?

我让它可以与所有其他口味一起使用,但不能与 Go 一起使用。

https://regex101.com/r/74RITp/4 <--此处有示例


解决方案


您可以完全删除环视并依赖捕获机制:

/p/[^/]*-([^/]*)/

请参阅 regex demo。请注意,前导和尾随 / 是字符串模式的一部分。 详细信息

  • /p/ - /p/ 字符串
  • [^/]* - 除 / 之外的零个或多个字符
  • - - 连字符
  • ([^/]*) - 第 1 组:除 / 之外的零个或多个字符
  • / - / 字符。

参见 Golang demo

package main

import (
    "fmt"
    "regexp"
)

func main() {
    s := `https://www.ikea.com/de/de/p/symfonisk-tischleuchte-mit-wifi-speaker-weiss-30435157/?tduid=d8b332c221610a36288c647f8959959f&utm_medium=affiliate&utm_name=generic&utm_term=conversion&utm_content=deeplink&utm_source=SmartApfel`
    regex := regexp.MustCompile(`/p/[^/]*-([^/]*)/`)
    fmt.Printf("%#v\n", regex.FindStringSubmatch(s)[1])
}

输出:“30435157”

终于介绍完啦!小伙伴们,这篇关于《正则表达式的前向和后向匹配》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>