Perl正则表达式中的split函数与创新特性
1. split函数返回空元素情况
在Perl中, split
函数的基本原理是返回由匹配分隔符分隔的文本,但有时返回的文本可能是空字符串。例如:
@nums = split(m/:/, "12:34::78");
上述代码会返回 ("12", "34", "", "78")
。正则表达式 :
匹配了三次,所以返回四个元素,其中第三个空元素表示正则表达式连续匹配了两次,中间没有文本。
通常,末尾的空元素不会被返回。例如:
@nums = split(m/:/, "12:34::78:::");
这会将 @nums
设置为与上一个例子相同的四个元素 ("12", "34", "", "78")
,即使正则表达式在字符串末尾又多匹配了几次。默认情况下, split
不会返回列表末尾的空元素。不过,可以通过使用合适的块限制操作数让 split
返回所有末尾元素。
块限制操作数除了可能限制块的数量外,任何非零的块限制操作数还会保留末尾的空元素。如果不想限制返回的块数量,但想保留末尾的空元素,可以选择一个非常大的限制值,更好的做法是使用 -1
,因为负的块限制会被视为任意大的限制