使用正则表达式获得2个零个或多个集合中的至少1个

时间:2012-04-23 00:39:52

标签: regex

我如何编写一个正则表达式,允许一个组中的零个或多个,以及另一个组中的零个或多个,但这两个组中至少有一个必须存在?

具体来说,我希望得到一个像引用一样的电子表格,因此它应该得到A1:B5(对于整个区域),A:A(对于整个列),或者5:5(对于整行)。< / p>

我第一次尝试

[A-Za-z]*[\d]*:[A-Za-z]*[\d]*

但这还不够,因为只需输入:或B6:也会满足该标准。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:2)

您可以通过分组来实现这一目标......

/((how)|(now))+/

如果你想匹配一个范围而不是一个单元格引用,你可以只列举这样做的方法:

([A-Z]:[A-Z])|(\d+:\d+)|([A-Z]\d+:[A-Z]\d+)

答案 1 :(得分:1)

一种方法是明确的改变:

(?:[a-zA-Z]+|\d+|[a-zA-Z]+\d+):(?:[a-zA-Z]+|\d+|[a-zA-Z]+\d+)

但是,如果你的引擎支持lookbehind,你可以使用它:

(?>[a-zA-Z]*\d*(?<=.)):(?>[a-zA-Z]*\d*)(?<=.))

这表示“零个或多个字母,后跟零个或多个数字,必须以至少一个字符(。)结尾。这保证它不会为空。原子分组(?>...)表示lookbehind (?<=.)无法与此前的任何内容相匹配。