我有一個我想分割的字符串。但分隔符是在運行時確定的,所以我需要將它作爲變量傳遞。爲什麼在`|`(管道)上拆分不能按預期工作?
類似my @fields = split(/$delimiter/,$string);
不起作用。有什麼想法嗎?
輸入:
abcd|efgh|23
預期輸出:
abcd
efgh
23
我有一個我想分割的字符串。但分隔符是在運行時確定的,所以我需要將它作爲變量傳遞。爲什麼在`|`(管道)上拆分不能按預期工作?
類似my @fields = split(/$delimiter/,$string);
不起作用。有什麼想法嗎?
輸入:
abcd|efgh|23
預期輸出:
abcd
efgh
23
你需要逃避你的分隔符,因爲它是在正則表達式特殊字符。
選項1:
$delimiter = quotemeta($delimiter);
my @fields = split /$delimiter/, $string;
選項2:
my @fields = split /\Q$delimiter/, $string;
有關更多信息,請參閱:「perldoc perlretut」,「perldoc perlre」並搜索/ \\ Q /並查看「perldoc -f quotemeta」。 – shawnhcorey 2011-03-28 21:21:51
「split」的參數不是分隔符,而是分隔符。 – tchrist 2011-03-28 21:51:34
不符合'perldoc -f split':「匹配PATTERN的任何內容都被視爲分隔字段的分隔符。」 – Sean 2011-03-29 20:50:08
你的輸入,實際產出和預期產出將是非常有用的信息... – Sean 2011-03-28 19:40:19
你沒有一個 「分隔符」,你有一個「分隔符」。 「分隔符」表示限制,即。它在兩端,就像雙引號。 「分隔符」位於元素之間,如「|」在您的示例輸入中。 – tadmc 2011-03-28 19:47:53
[我如何處理Perl正則表達式中的特殊字符?](http://stackoverflow.com/questions/576435/how-do-i-handle-special-characters-in-a-perl-regex) – daxim 2011-03-29 08:24:57