前瞻和后视正则表达式
Lookahead and Lookbehind regex
所以我有这个正则表达式:(?:\/p\/|$)(?:[^\/]*)(?<=-)(.*)(?=\/)
我希望它能从宜家链接中提取 id,但它似乎不适用于 Go。任何人都可以帮我吗?或者有没有工具可以转换它?
我让它可以与所有其他版本一起使用,但不能与 Go 一起使用。
https://regex101.com/r/74RITp/4 <-- 这里有例子
您可以完全删除 lookarounds 并依赖捕获机制使用:
/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"
所以我有这个正则表达式:(?:\/p\/|$)(?:[^\/]*)(?<=-)(.*)(?=\/)
我希望它能从宜家链接中提取 id,但它似乎不适用于 Go。任何人都可以帮我吗?或者有没有工具可以转换它?
我让它可以与所有其他版本一起使用,但不能与 Go 一起使用。
https://regex101.com/r/74RITp/4 <-- 这里有例子
您可以完全删除 lookarounds 并依赖捕获机制使用:
/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"