我有一個字符串中的變量:在Perl中提取子字符串?
$mystr = "some text %PARTS/dir1/dir2/myfile.abc some more text";
現在%PARTS是字符串中字面上存在,它不是一個變量或散列。 我想從中提取子字符串%PARTS/dir1/dir2/myfile.abc
。我創建了以下reg表達式。我只是Perl的初學者。所以請讓我知道如果我做錯了什麼。
my $local_file = substr ($mystr, index($mystr, '%PARTS'), index($mystr, /.*%PARTS ?/));
我甚至試過這樣:
my $local_file = substr ($mystr, index($mystr, '%PARTS'), index($mystr, /.*%PARTS' '?/));
但無論給什麼,如果我打印$local_file
。 這裏可能有什麼問題? 謝謝。
UPDATE:簡稱爲以下站點爲使用這種方法:
- http://perlmeme.org/howtos/perlfunc/substr.html見實施例1c
- How to take substring of a given string until the first appearance of specified character?
@stema:不能使用捕獲組直接分配匹配的零件。如果您使用'$&',則可以避免該組,如果使用組或列表上下文加'/ g',則可避免使用$ 1。 – choroba 2013-05-02 12:07:44
不好的例子。你不檢查正則表達式是否失敗,這可能會從其他一些正則表達式中執行$ 1。最簡單的方法就是在dolmen的回答中顯示的。 – ysth 2013-05-02 15:45:40
@amon謝謝你的詳細解答。作品像一個魅力:) – 2013-05-03 05:33:51