([1|2|3|4|5|6|7|8|9])
和(1|2|3|4|5|6|7|8|9)
我想检查思科交换机的每个端口是否有指定的命令集。端口编号为1到9.使用正则表达式我希望代码选择每个数字以验证配置。
答案 0 :(得分:6)
第一个正则表达式没有意义:它意味着“选择1或选择|或选择2或选择3或......或选择9”
第二种意思是“选择1或选择2或选择3或......或选择9”
我认为你在第一个正则表达式中寻找的正则表达式是([123456789])
,这与第二个正则表达式完全相同。
为了使其更简单,您可以使用([1-9])
,它只是表示范围。
有关正则表达式(更具体地说是perl兼容的正则表达式(PCRE))的更多信息,您可以查看here。
答案 1 :(得分:1)
第一个将匹配集合中的任何字符
| 123456789
第二个匹配
1或2或3或4或5或6或7或8或9
答案 2 :(得分:1)
第一个将匹配以下任何一个:
1 2 3 4 5 6 7 8 9 |
而第二个匹配任何一个:
1 2 3 4 5 6 7 8 9
请注意,第一个相当于:([123456789|])
。
当然,能够解决您问题的正则表达式(稍微)有所不同:([123456789])
或([1-9])
。
答案 3 :(得分:1)
正如其他人所说,“|”在第一个显然是错误的,因为没有必要重复它,因此应该是[123456789]或[1-9]。除此之外,值得注意的是,在数字上下文中,这些确切数据没有功能差异,隐藏了逻辑错误,因为它们碰巧只包含单个字符(第二个“字符串”恰好是单个字符)。但是,([1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10])和(1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10)不会功能相同,即使在数字上下文中,因为只有第一个匹配“0”(冗余的“1”以及无关的“|”),只有第二个匹配10.注意这可能进一步有助于澄清混淆和潜力使这一点变得重要的错误。