Re: [問題] 請問如何在{}裡面使用\1?
※ 引述《scwg ( )》之銘言:
: ※ 引述《YMLS (流逝於指縫的細沙)》之銘言:
: : 大家好,我有一筆資料如下:
: : C+2AAT-3CGCA
: : 我希望寫一行程式,使得數字後面的字母會依照數字的內容被拿走,如下所示:
: : C+T-A
: : 我嘗試如下的寫法:
: : $line='C+10AAAAAAAAAAT-3CGCA';
: : $line=~s/(\d+)[ACGTNacgtn]{\1}//g;
: : 可是 {\1} 無法發揮我想要得效果,
: : 想請問是否我的語法本身有問題呢?謝謝!
: 根據 http://perl5.git.perl.org/perl.git/blob?f=dquote_static.c
: S_regcurly() 在 parse 的時候 { 之後一定要接數字 -- 不能寫 {\1}
: 我會這樣寫
: $line='C1tt+10AAAAAAAAAAT-3CGCA';
: while ($line =~ /\d+/) {
: $pre = $`;
: ($post = $') =~ s/^[acgtn]{$&}//i;
: $line = $pre . $post;
: }
: print $line . $/;
: --
: ※ 發信站: 批踢踢實業坊(ptt.cc)
: ◆ From: 128.36.232.45
: 推 herculus6502:我記得可以用eval的option,有請高人出手… 06/17 16:51
: 推 CindyLinz:翻 perl 的 source 出來解釋會不會太恐怖....|| 06/17 18:07
查 perlre 可以看到 (??{ CODE }) 的用法,
被標示為 experimental, 說是以後可能會無預警改掉.
不過它掛在那邊不動好像也很久了..
不過用的話仍請自負風險 :p
你想要的功能可以寫成這樣:
$line=~s/(\d+)(??{"[ACGTNacgtn]{$1}"})//g
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 112.121.80.249
→
06/17 20:47, , 1F
06/17 20:47, 1F
→
06/17 21:25, , 2F
06/17 21:25, 2F
→
06/17 21:33, , 3F
06/17 21:33, 3F
討論串 (同標題文章)
Perl 近期熱門文章
PTT數位生活區 即時熱門文章