Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 正则表达式和匹配代码从右到左_Vb.net_Regex_Matching - Fatal编程技术网

Vb.net 正则表达式和匹配代码从右到左

Vb.net 正则表达式和匹配代码从右到左,vb.net,regex,matching,Vb.net,Regex,Matching,我和正则表达式有点纠结,一个字符串中有4个代码 代码4:代码3:代码2:代码1 除代码1外,每个代码都是可选的 所以我可以有ab:bc:de:fg 或 bc::fg 的 ab:::fg 在上述每种情况下,我都无法计算正则表达式 作为标准字符串解析很容易,但不幸的是,因为中的business对象需要通过regex:-(并通过vb.net regex.matche、groups(“Code1”)fg返回)(我希望这是有意义的) 提前谢谢你的帮助 最后用了一点正则表达式完成了这项工作,虽然有点混乱,但

我和正则表达式有点纠结,一个字符串中有4个代码

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

除代码1外,每个代码都是可选的

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

bc::fg

ab:::fg

在上述每种情况下,我都无法计算正则表达式

作为标准字符串解析很容易,但不幸的是,因为中的business对象需要通过regex:-(并通过vb.net regex.matche、groups(“Code1”)fg返回)(我希望这是有意义的)

提前谢谢你的帮助

最后用了一点正则表达式完成了这项工作,虽然有点混乱,但它仍然有效

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

Ta all

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

我不知道您使用的是什么语言,但是在“:”上拆分字符串,您将得到一个代码数组

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

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

与您的描述和您给出的几个示例相匹配。

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

我不知道您使用的是什么语言,但是在“:”上拆分字符串,您将得到一个代码数组

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

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

匹配您的描述和您给出的几个示例。

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

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

然后,代码1在$4中,代码2在$3中,代码3在$2中,代码4在$1中。

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

/(.*):(.*):(.*):(.+)/
然后你有$4中的代码1,$3中的代码2,$2中的代码3,$1中的代码4。

(CODE1)?:(CODE2)?:(CODE3)?:CODE4将起作用-如果前导:没关系。否则,如果你没有前导冒号,请列举:

(代码1:(代码2)?:(代码3)?:|代码2:(代码3)?:|代码3)?代码4

最右边的部分是强制性的,而最左边的部分不是强制性的,这一事实没有什么特别之处。

(CODE1):(CODE2):(CODE3):(CODE4)
可以工作-如果前导:没关系。否则,如果不能有前导冒号,请列举:

(代码1:(代码2)?:(代码3)?:|代码2:(代码3)?:|代码3)?代码4


最右边的部分是强制性的,而最左边的部分不是强制性的,这一事实没有什么特别之处。

对于ab:cd:ef:gh但不适用于gh或cd::gh(其中gh=代码1)来说效果很好,对于ab:cd:ef:gh但不适用于gh或cd::gh(其中gh=代码1),我更喜欢[^:]+就我个人而言,除此之外,它看起来很好,可以匹配代码的所有变体,但我看不到如何通过正则表达式提取。匹配、分组各个部分(代码1)我更新了问题,询问我为什么需要这样做this@Jeff阿特伍德:我不认为[^:]有什么好处如果代码是字母数字,这里的+而不是*是错误的,因为我们可以有空字段。@PhiLho:OP没有说代码总是字母数字的。我们可以合理地假设它们不能包含冒号。而+是因为前导字段是可选的,如果它们是空的。我更喜欢[^:]+就我个人而言,除此之外,它看起来很好,可以匹配代码的所有变体,但我看不到如何通过正则表达式提取。匹配、分组各个部分(代码1)我更新了问题,询问我为什么需要这样做this@Jeff阿特伍德:我不认为[^:]有什么好处over\w如果代码是字母数字,这里的+而不是*是错误的,因为我们可以有空字段。@PhiLho:OP没有说代码总是字母数字的。我们可以合理地假设它们不能包含冒号。而+是因为前导字段是可选的,如果它们是空的。