簡體   English   中英

正則表達式紅寶石

[英]Regular Expressions ruby

"(fname:John OR lname:Doe) (male OR female)"

"(fname:John OR address:1200 main str va) (male OR female)"

"(address:1200 main str va OR fname:John ) (male OR female)"

"(fname:John OR address:1200 main str va OR lname:Doe) (male OR female)"

只有第一行不需要任何更改。 在底部的三行中,我需要將地址放在括號中,因為它在冒號后面有兩個或更多的單詞。

例如,對於第二行,修改后的輸出應為

"(fname:John OR address:(1200 main str va)) (male OR female)"

我試圖用正則表達式來做這件事,但我正在努力告訴正則表達式如何尋找直到你遇到世界或者如果你遇到“(”或“)”然后停止。


e.gsub /address:(.*?(?=( *OR| *\))))/, 'address:(\1)'

或者,使用測試用例包裝器......

[ "(fname:John OR lname:Doe) (male OR female)",
  "(fname:John OR address:1200 main str va) (male OR female)",
  "(address:1200 main str va OR fname:John ) (male OR female)",
  "(fname:John OR address:1200 main str va OR lname:Doe) (male OR female)"
].each do |e|
  puts e.gsub /address:(.*?(?=( *OR| *\))))/, 'address:(\1)'
end

返回...

(fname:John OR lname:Doe) (male OR female)
(fname:John OR address:(1200 main str va)) (male OR female)
(address:(1200 main str va) OR fname:John ) (male OR female)
(fname:John OR address:(1200 main str va) OR lname:Doe) (male OR female)

暫無
暫無

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

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