簡體   English   中英

正則表達式:如何使用正則表達式捕獲多個組中的一個? (在紅寶石中)

[英]Regex: How do you capture one group among multiple groups using regex? (in ruby)

我有兩組文字:

firstgroup
(some content)
endgroup


secondgroup
(some content)
endgroup

我試圖捕獲第一組(而不是第二組)。 我正在使用以下正則表達式:

firstgroup(.|\n)*endgroup

由於某種原因,該正則表達式同時選擇了第一組和第二組(可能是因為它查看了上面的最后一個“ endgroup”)。 有沒有辦法修改我的正則表達式,使我只選擇第一個組(而不選擇第二個組)?

您需要一個懶惰的量詞

/firstgroup\n(.*?)\nendgroup/m

盡快結束小組。 參見http://www.rubular.com/r/D6UkOnMYLj

(並且您可以使用/m標志使.匹配新行。)

string=<<EOF
firstgroup
(some content)
endgroup


secondgroup
(some content)
endgroup
EOF

puts string.split(/endgroup/)[0] + "endgroup"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM