Regex 如何将这个正则表达式压缩为一组重复的分段?
我该如何浓缩这个?我尝试使用括号和/2,但似乎不起作用。有人知道吗?这有点难看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} 或 这取决于你的要求。你关心什么匹配吗?实际上应该只
^(\$|)[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}