精華區beta RegExp 關於我們 聯絡資訊
我要辨識的樣式是 (運算式)^數字,(運算式)^(運算式),數字^(運算式),數字^數字 這樣 抱歉沒說清楚狀況... (Math.sqrt((124+20)))+(Math.sqrt(169))^2 要怎樣下 RegExp 才能讓辨識出來的是 (Math.sqrt(169))^2 而不是 (Math.sqrt((124+20)))+(Math.sqrt(169))^2 也就是說我想找最小成對的括號 我做sqrt的時候發現他預設似乎會從最長的符合樣式開始找 但是這次我想要從最小的開始找 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.160.179.238 ※ 編輯: shomingchang 來自: 118.160.179.238 (05/12 23:45)
bibo9901:\(.+?\) 這樣? 05/13 00:06
shomingchang:不行 他還是選到最前面的括號 05/13 00:29
No:如果是匹配括號,那後面怎麼還會有^2呢? 05/13 00:35
※ 編輯: shomingchang 來自: 118.160.179.238 (05/13 00:40)
shomingchang:有方法可以找出所有匹配樣式的字串嗎? 05/13 00:48
CindyLinz:「最小」是裡面沒有其他括號的意思嗎? 那 /\([^()]*\)/g 05/13 00:51
LPH66:樓上看來也不對 他要的東西裡面有 Math.sqrt(169) 05/13 00:52
No:那這樣說起來,要的結果,也不算是"最小"的成對括號耶 05/13 01:22
evernever:PHP: $s="(Math.sqrt((124+20)))+(Math.sqrt(169))^2"; 05/13 15:29
evernever:preg_match_all('#(\([^()]*(?1)?[^()]*\))#',$s,$m); 05/13 15:29
evernever:print_r($m); 05/13 15:29