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
Regex 简化正则表达式-多个离散选项_Regex - Fatal编程技术网

Regex 简化正则表达式-多个离散选项

Regex 简化正则表达式-多个离散选项,regex,Regex,基本上,是否有任何方法可以缩短/简化上述步骤?是否有一种方法可以在这些花括号中表示多个离散数字计数,而不是单个连续范围?似乎您希望将偶数个数字匹配n次 您可以将\d{2}子模式分组,并对其应用限制量词: ^(\d{2}|\d{4}|\d{6}|\d{8})N 看 详情: ^-字符串的开头 (?:\d{2}{1,4}-1至4(4可根据需要调整)两位数序列 $-字符串的结尾(如果您只需要在字符串的开头进行匹配,则可以删除此锚定) 可能?它与原始字符串不匹配。它应该是^(?:\d{2}{1,4}N


基本上,是否有任何方法可以缩短/简化上述步骤?是否有一种方法可以在这些花括号中表示多个离散数字计数,而不是单个连续范围?

似乎您希望将偶数个数字匹配n次

您可以将
\d{2}
子模式分组,并对其应用限制量词:

^(\d{2}|\d{4}|\d{6}|\d{8})N

详情:

  • ^
    -字符串的开头
  • (?:\d{2}{1,4}
    -1至4(
    4
    可根据需要调整)两位数序列
  • $
    -字符串的结尾(如果您只需要在字符串的开头进行匹配,则可以删除此锚定)

可能?它与原始字符串不匹配。它应该是
^(?:\d{2}{1,4}N
@wdosanjos:我几乎可以肯定
N
代表某种“神奇”数字,它将量化原始的交替序列。无论如何,我在解释中添加了注释,以便可以根据任何特定的要求调整模式。我知道这对于示例中的数字的模式数字是如何工作的,因此我可能会接受这个答案。然而,是否有一种方法可以应用于不太一致的离散数字量?疯狂的例子:位数必须是(有限集合的)素数?(2,3,5,7,11,13,17)如果不能使用限制量词,则必须使用嵌套可选组(例如,可读性较差的版本)或详细组。在regex的世界里,别无选择。
^(?:\d{2}){1,4}$