所以我正在尝试匹配某个邮政编码范围:
CB1 *,CB2 *,CB3 *,CB4 *,CB5 *,CB21 *,CB22 *,CB23 *,CB24 *,CB25 *
所以我尝试使用范围1-5或21-25。
这是我现在的正则表达式:
^[CBcb].([1-5]|[21-25]).+$
我想确保邮政编码部分包含以下内容
[CB OR cb],[1-5 OR 21-25] and [Any combination]
有一个修补程序:https://regex101.com/r/aP9uG3/2
你如何指定两个范围?
答案 0 :(得分:1)
由于模式是相同的,只有2
可能会或可能不会发生,您可以这样说:
CB2?[1-5] # add ^ and $ if required
如果要指定两个范围,可以始终使用括号common_pattern(pattern1|pattern2)
对它们进行分组。
答案 1 :(得分:1)
d1 <- expand.grid(paste(z1,z2), z3)
transform(read.table(text=as.character(d1$Var1), header=FALSE), V3= d1$Var2)
并使用i
flag。
第一个错误是您只匹配列表^cb2?[1-5].+$
中的一个字符。第二个是中间有一个奇怪的[cbCB]
。第三是你没有指定数字范围,而是指定一系列字符。 .
不是字符,而是一系列字符。获得所有可能(整数)数字的字符范围是21
。你想要的是一个可选的[0-9]*
,后面是[1-5]范围内的一个字符。
你应该阅读正则表达式中的列表和范围是什么和意思,因为你误用了它们! Eeryone明显犯了错误,但这是你应该掌握的基础之一。
答案 2 :(得分:1)
你的正则表达式模式:
^[CBcb].([1-5]|[21-25]).+$
被解释为:
^[CBcb].([12345]|[2125]).+$
你需要:
^CB2?[1-5].+'
此处?
表示前一个令牌的零或一个匹配,在这种情况下为2
。
答案 3 :(得分:1)
在[]
中包含字符使其成为一个字符类。这意味着匹配括号内的任何字符(除非它被否定)。它不是数字,而是字符。
如果您想匹配CB
或cb
,请将其|
与CB|cb
分开。甚至更好 - 让你的正则表达式独立。这在不同的正则表达式中以不同的方式完成。例如,在javascript中,将字符i
附加到正则表达式:/cb/i
。
至于模式的其余部分,如果1-5和20-25实际上是你想要的,那么匹配1-5是用一个字符类(你现在熟悉的那样;),如[1-5]
含义匹配字符1和5之间的ASCII范围内的任何字符。
使前面的2
可选,你的正则表达式如下所示
CB2?[1-5]
它与您的邮政编码相匹配,没有终止$
,它允许您[Any combination]
。
希望这有帮助。
此致