2011-06-28 37 views
4

我正在使用這個正則表達式來查找基因組中的模式。Perl:我如何利用正則表達式匹配?

$string =~ /(?i)a+t?|(?i)t+/g 

爲了使輸出更易於閱讀,我想對其進行修改,使其大小匹配長度爲4到7個字符的任何內容。此外,它不應該混淆$+[0]$-[0]變量。

我做輸出的方式是從基於'$ + [0]'和'$ + [0]'的較大字符串文件中獲取一個子字符串,我不想打印出正則表達式匹配我打印出大量的校正器,我希望比賽能夠突出。

如果你真的需要看到我工作的代碼,你可以用類似{4,7}很可能需要量詞讓它here

+1

爲什麼不只是將輸出大寫? –

+0

如果你想改變輸出,你最好顯示輸出的代碼。 – ysth

+0

@ysth&@ Dimitar-Petrov獲取代碼輸入和輸出[here](http://www.fiveeight.com/downl.html) – Orion

回答

9

通過適當的測試(您對手和長度(字符組),沒有示例內容,這是留給你)你可以使用一個eval替代品s/(match)/uc($1)/eg這將採取匹配的字符串,並使其大寫,然後用替換替換匹配。

一如既往閱讀更多perldoc perlreperldoc perlrerefperldoc perlretut

一點題外話,我一直想,如果基因組是Regexp::Grammars一個很好的候選人?

+4

不需要「eval替換」。 s ///的替換部分是雙引號,因此您可以使用反斜槓轉義而不需要s /// e:s /(match)/ \ U $ 1/g – tadmc

+0

@tadmc,很酷,很高興知道 –