Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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,我该如何浓缩这个?我尝试使用括号和/2,但似乎不起作用。有人知道吗?这有点难看 ^(\$|)[A-Z0-9_\- ]*\t[0-9\.\-]*\t[0-9\.\-]*\t[0-9\.\-]*\t[0-9\.\-]*\t[0-9\.\-]*\t[0-9\.\-]*\t 我使用的是与Perl 6.18兼容的正则表达式引擎(我认为是.18)。使用非捕获组和重复量词 ^(\$|)[A-Z0-9_\- ]*\t(?:[0-9\.\-]*\t){6} 或 这取决于你的要求。你关心什么匹配吗?实际上应该只

我该如何浓缩这个?我尝试使用括号和/2,但似乎不起作用。有人知道吗?这有点难看

^(\$|)[A-Z0-9_\- ]*\t[0-9\.\-]*\t[0-9\.\-]*\t[0-9\.\-]*\t[0-9\.\-]*\t[0-9\.\-]*\t[0-9\.\-]*\t

我使用的是与Perl 6.18兼容的正则表达式引擎(我认为是.18)。

使用非捕获组和重复量词

^(\$|)[A-Z0-9_\- ]*\t(?:[0-9\.\-]*\t){6}


这取决于你的要求。你关心什么匹配吗?实际上应该只有最大1个小数点和最大1个减号,因为它只是一个数字,但并不重要。它只是使用整个正则表达式来验证一些数据,而正则表达式已经足够复杂,只能匹配一些非常特定的csv数据格式。正如你所看到的,我对正则表达式很陌生。你也可以将第一个字符类中的
-
移到末尾,这样就不需要转义了。是的,在最后一个或第一个字符类中。
^\$?[-A-Z0-9_ ]*\t(?:[0-9.-]*\t){6}