Re: [問題] 請問如何在{}裡面使用\1?

看板Perl作者 (Cindy Wang)時間12年前 (2013/06/17 18:13), 編輯推噓0(003)
留言3則, 3人參與, 最新討論串3/4 (看更多)
※ 引述《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
你跑去用 (??{ }) 明明就比翻 source code 恐怖
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
文章代碼(AID): #1Hlk5ctr (Perl)
文章代碼(AID): #1Hlk5ctr (Perl)