我正在寻找一个 GoLang RE2 正则表达式,如果用户键入以下内容之一,它只会不匹配,所有这些都不能区分大小写:.i l .i Latest .info l .info Latest p!i l p!i latest p!info l p!info latest因此,在每一种情况下,如果用户只输入前缀而没有latestor之后,或者在前缀之外和之后输入l任何其他内容,包括任何数字或特殊字符,则在每一种情况下,它都有一个前缀和一个属性。这应该是一场比赛。latestl我已经杰里操纵了这个正则表达式: (?i)\A\.i (?:L.|[^L]+L)这个正则表达式有些工作,但它只适用于.i前缀并检查L前面的 a 而不检查数字。我无法思考如何解决这个问题。我不介意使用多个正则表达式,每个前缀一个。我尝试将 替换为\.i其他前缀,将(?:L.|[^L]+L)部分替换为LATEST. 这似乎不起作用。谢谢您的帮助 : )
1 回答
月关宝盒
TA贡献1772条经验 获得超5个赞
Go 不支持环视。在这种情况下,您可以指定允许匹配的内容。
在这种情况下,您允许任何前缀可选地后跟除“l”或“latest”之外的“word”
一种选择可能是
(?i)^(?:\.|p!)i(?:nfo)?\b(?:(?: +(?:la(?:t(?:e(?:s(?:t\S)?)?)?)?)| +(?:[^\sl]\S*|l[^\sa]\S*|la[^\st]\S*|lat[^\se]\S*|late[^\ss]\S*|lates[^\st]|latest\S+))(?: +.*)?)?$
在零件
(?i)
不区分大小写的修饰符^
字符串的开始(?:\.|p!)i
匹配.i
或p!i
(?:nfo)?\b
可选匹配nfo
后跟单词边界(?:
非捕获组+(?:la(?:t(?:e(?:s(?:t\S)?)?)?)?)
匹配 1+ 个空格和la
lat
late
lates
或latest
(后跟至少一个非空白字符以表示最新)|
或者+(?:[^\sl]\S*|l[^\sa]\S*|la[^\st]\S*|lat[^\se]\S*|late[^\ss]\S*|lates[^\st]|latest\S+)
匹配 1+ 个空格后跟 6 个变体,这些变体可以以相同的单词开头,不包括 1 个字符(也排除使用 的空白字符\s
),或匹配后跟至少一个空白字符的单词(?:
非捕获组)
关闭非捕获组(?: +.*)?
可选匹配 1+ 个空格和 0+ 次除换行符以外的任何字符)?
关闭非捕获组并使其可选$
字符串结束
- 1 回答
- 0 关注
- 83 浏览
添加回答
举报
0/150
提交
取消