RegEx和匹配代码从右到左

时间:2008-12-19 10:58:40

标签: vb.net regex matching

使用RegEx进行一点点处理,我在字符串中有4个代码

码4:CODE3:CODE2:CODE1

除了CODE1

之外,每个代码都是可选的

所以我可以拥有ab:bc:de:fg

BC :: FG

AB ::: FG

在上述CODE1 = fg dnd的每一种情况下,对于我的亲爱的生活,我无法解决RegEX

作为一个标准的字符串解析很容易做,但是由于需要通过正则表达式完成商业对象,因此需要通过vge.net RegEX.matche,group(“Code1”)返回fg(I)希望有道理)

提前感谢您提供任何帮助

结束了一些可以完成工作的RegEx,有点乱,但是它可以正常工作

(^(?<code1>[\w]*)$)|(^(?<code2>[\w]*):(?<code1>[\w]*)$)|(^(?<code3>[\w]*):(?<code2>[\w]*):(?<code1>[\w]*)$)|(^(?<code4>[\w]*):(?<code3>[\w]*):(?<code2>[\w]*):(?<code1>[\w]*)$)

全部

3 个答案:

答案 0 :(得分:4)

此处无需使用正则表达式。

我不知道您使用的语言是什么,但是将字符串拆分为':',您将拥有一系列代码。

如果你真的只想验证字符串是否对此有效,那么

/(\w*:){0,3}\w+/

符合您的描述和您提供的几个示例。

答案 1 :(得分:0)

我不确定为什么你必须从右到左匹配代码。只需使用正则表达式来分离字符串:

/(.*):(.*):(.*):(.+)/

然后你有4美元的CODE1,3美元的CODE2,2美元的CODE3,1美元的CODE4。

答案 2 :(得分:0)

(CODE1)?:(CODE2)?:(CODE3)?:CODE4会起作用 - 如果领先:无关紧要。否则,如果您不能拥有前导冒号,请枚举:

(CODE1:(CODE2)?:(CODE3)?:|CODE2:(CODE3)?:|CODE3)?CODE4

最右边的部分是强制性的,最左边的部分不是强制性的,这没什么特别的。