gpt4 book ai didi

regex - regexp.Compile 和 regexp.CompilePOSIX 有什么区别?

转载 作者:IT王子 更新时间:2023-10-29 00:40:23 25 4
gpt4 key购买 nike

谁能提供一些例子来解释 regexp.Compile 之间的区别?和 regexp.CompilePOSIX ?我阅读了文档。但是我无法得到直观的理解。

最佳答案

Perl 和 POSIX 兼容的正则表达式在很大程度上相似,但在某些关键方面有所不同,例如 submatching。这个提到here :

POSIX defines that to resolve submatches, first chose the match that starts leftmost in the string. (This is traditional Perl behavior but here things diverge.) Among the submatches starting at the leftmost position in the string, choose the longest one overall.

假设您有一个正则表达式 (foo|foobar)。当将此表达式与匹配多个子表达式的字符串匹配时(例如,foobarbaz 将匹配两个子模式,foofoobar), Perl 兼容的正则表达式将返回第一个匹配项 (foo),而 POSIX 兼容的正则表达式将返回最长的匹配项 ( foob​​ar).

一些示例代码(playground):

package main

import "fmt"
import "regexp"

func main() {
pattern := "(foo|foobar)"
str := []byte("foobarbaz")

rPCRE, _ := regexp.Compile(pattern)
rPOSIX, _ := regexp.CompilePOSIX(pattern)

matchesPCRE := rPCRE.Find(str)
fmt.Println(string(matchesPCRE))
// prints "foo"

matchesPOSIX := rPOSIX.Find(str)
fmt.Println(string(matchesPOSIX))
// prints "foobar"
}

关于regex - regexp.Compile 和 regexp.CompilePOSIX 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34828408/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com