[英]Perl: Help writing a regular expression
我正在嘗試為以下3種情況編寫一個通用的正則表達式:
現在我的例行表達應從原始字符串中刪除系列名稱,即上述字符串的輸出為:
現在,對於supernatural string
的基本情況,我編寫了以下正則表達式,它可以正常工作,但是一旦系列名稱得到多個單詞,它就會失敗。
$string =~ s/^(.*?)[\.\_\- ]//i; #delimiter can be (. - _ )
因此,我不知道如何針對\\w+{1,6}
上述情況繼續進行處理,但是它也無法滿足要求。
PS:對正則表達式在做什么的解釋將不勝感激。
您可以檢測。的下一個標記是否包含數字,如果沒有,則將其視為名稱的一部分。
但是,我個人認為沒有完美的解決方案。 它仍然會遇到類似以下問題:
24.313.480p.hdtv.x264-2hd.mkv // 24
Warehouse.13.s02e07.hdtv.x264-xor.avi // warehouse 13
正如StanleyZ所說的那樣,您總是會遇到包含數字的名稱的麻煩。
但是,如果您采取這些特殊情況,可以嘗試:
#perl
$\=$/;
map {
if (/^([\w\.]+)[\.\_]([SE\d]+[\.\_].*)$/i) {
print "Match : Name='$1' Suffix='$2'";
} else {
print "Did not match $_";
}
}
qw!
Supernatural_S07E23_720p_HDTV_X264-DIMENSION.mkv
the.listener.313.480p.hdtv.x264-2hd.mkv
How.I.met.your.mother.s02e07.hdtv.x264-xor.avi
!;
輸出:
Match : Name='Supernatural' Suffix='S07E23_720p_HDTV_X264-DIMENSION.mkv'
Match : Name='the.listener' Suffix='313.480p.hdtv.x264-2hd.mkv'
Match : Name='How.I.met.your.mother' Suffix='s02e07.hdtv.x264-xor.avi'
注意:您不是在做違法的事嗎? ;)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.