Re: [問題] 請教一個關於正規表示式的問題
※ 引述《AutumnVic (小點點雨傘兒)》之銘言:
: 我現在要做的事
: 是要從很多像這樣的字串中
: ((((((.(((.((((..((((...........))))..)))))..........))...))))))...
: ........(((((..(((((((..(((.....)))))..))......)))))..)))...
: 挑出中間部份 "(.....)"的左括和右括分別位在字串中的第幾個字元
: 下面是我的CODE
: my $haha="....((((((...(((..((.(.(((((.....))))).))...)))))))...)))..";
: print length($1) if( $haha =~ m/(.*)[^\(]*? /)
: 但他這樣取到的一直都是整個字串的length
我是不明白這樣的一個寫法 到底根據是什麼 不過會回傳整個字串應該蠻合理的
首先這邊的(.*)以greedy特性就會把整個字串都包進去
後面的[^\(]如果是表達"非左括號的字符集" 那把整個字串包進去就合理了
最後一個表達是講不貪多出現零次以上 感覺 有點看不太懂
: 而不是我想要的"中間左括"的位子
: 能不能請厲害的人幫我一下 實在不知道該怎麼拆解找這兩個東西 @@
因為問題好像有點複雜 所以照字面上去解 就先假設一行中只會出現一個"中間括號"
那要算的就是"出現在最右邊的左括號"
這樣寫不知道有沒有達到需求
use 5.010 ;
my $haha='....((((((...(((..((.(.(((((.....))))).))...)))))))...)))..';
say length($haha) ;
say length($1) if( $haha =~ m/(.*)\(.*?/) ;
--
如果青春注定要向前跑
他媽的...那我的出口在那?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.137.138.159
→
12/20 09:47, , 1F
12/20 09:47, 1F
→
12/20 09:47, , 2F
12/20 09:47, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 5 之 6 篇):
Perl 近期熱門文章
PTT數位生活區 即時熱門文章