English 中文(简体)
RegEx和匹配代码从右到左
原标题:
  • 时间:2008-12-19 10:58:40
  •  标签:

用正则表达式有点吃力,我在一个字符串中得到了4个代码。

代码4:代码3:代码2:代码1

每个代码都是可选的,除了CODE1。

这样我就可以得到ab:bc:de:fg。

或者 (Huòzhě)

Sorry, the phrase "bc::fg" cannot be translated as it is not a valid word or sentence in English. Please provide a valid phrase or sentence for translation.

I'm sorry, but "ab:::fg" does not make any sense in English or Chinese, so I cannot translate it for you. Please provide a valid phrase, sentence or context for translation.

In each case 的the above CODE1 = fg dnd f或者 (Huòzhě) the dear life 的me I can t w或者 (Huòzhě)k out the RegEX

Would be easy to do as a standard string parse, but unf或者 (Huòzhě)unatly because 的buisness objects in needs to be done via regex :-( and return via a vb.net RegEX.matche,groups("Code1") fg (I hope that makes sense)

Thanks in advance f或者 (Huòzhě) any help

Ended up with a bit 的RegEx that does the job, bit messy but it w或者 (Huòzhě)ks

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

她们所有的。

最佳回答

这里不需要使用正则表达式。

我不知道你在用什么语言,但将该字符串按“:”分割,你就会得到一个代码数组。

如果你只是想验证这个字符串是否有效,则

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

符合你的描述和你提供的少量示例。

问题回答

我不确定为什么你要从右到左匹配代码。只需使用正则表达式来拆分字符串即可。

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

然后,您在$4中有CODE1,在$3中有CODE2,在$2中有CODE3,在$1中有CODE4。

如果前导冒号无关紧要,(CODE1)?:(CODE2)?:(CODE3)?:CODE4将奏效。否则,如果您不能有前导冒号,请枚举:

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

右边部分是必需的,而左边部分不是,这没什么特别的。





相关问题
热门标签