登录
首页 >  Golang >  Go问答

Golang 正则表达式 MatchString 转义字符破折号

来源:stackoverflow

时间:2024-02-05 23:54:23 461浏览 收藏

大家好,今天本人给大家带来文章《Golang 正则表达式 MatchString 转义字符破折号》,文中内容主要涉及到,如果你对Golang方面的知识点感兴趣,那就请各位朋友继续看下去吧~希望能真正帮到你们,谢谢!

问题内容

正则表达式中破折号 (-) 的顺序是否重要。在以下情况下,validid1 破折号 (-) 之前没有提到转义字符,并且测试用例失败。如果我在 validid1 ((^[abcd1234\-_.]$)) 中添加转义字符,则测试用例通过。 在 validid2 中,没有提供转义符测试用例就通过了。为什么它的行为不同。

var validID1 = regexp.MustCompile(`^[abcd1234-_.]$`) //  No escape is provided
var validID2 = regexp.MustCompile(`^[abcd1234+-\/]$`) // No escape is provided for(-) but provided for (/)

fmt.Println(validID1.MatchString("adc-")) // false
fmt.Println(validID2.MatchString("adc-")) // true

正确答案


类中的破折号 - (用方括号 [..] 表示)是一个特殊的元字符
(课堂内)。它们代表一系列字符,其中 = 从 char - 到 char

如果你希望它是一个文字破折号,你必须将它转义 \- 或将其放在开头或
课程结束,消除了歧义。

因此,在您的示例中,这就是这些类匹配的内容

[abcd1234-_.] 匹配 .123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_abcd

[abcd1234+-/] 匹配 +,-./1234abcd

在类之外,破折号没有特殊的元字符含义。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

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