簡體   English   中英

正則表達式查找兩個字符之間的一組字符串

[英]Regular Expression to find a group of strings between two characters

可以說我有:

[Radius: 4000 mi.] -- 61362 -- Spring Valley, IL, US

目的是獲得:

Spring Valley, IL

我想用 RegEx 來實現這一點。 當我嘗試(?<=--)(.*?)(?=\, US)時,我似乎無法取出第二組“--”。

如果您願意考慮使用非正則表達式方法,您可以在連字符和空格 (' -- ') 上拆分字符串,獲取索引 2 處的元素(城市、州、國家/地區),然后用逗號拆分將結果限制為 2,然后用逗號重新加入,你就得到了你要找的東西。

比正則表達式方法更易於閱讀,並且代碼庫中的其他開發人員可能更容易理解正在發生的事情。

 const s = '[Radius: 4000 mi.] -- 61362 -- Spring Valley, IL, US'; const cityState = s.split(' -- ')[2]?.split(',', 2).join(','); console.log(cityState);

您可以使用lookbehind,但在兩者之間您不應該匹配--再次

(?<= -- )(?:(?! --).)*(?=, US)

正則表達式演示

 const s = `[Radius: 4000 mi.] -- 61362 -- Spring Valley, IL, US`; const regex = /(?<= -- )(?:(?! --).)*(?=, US)/; const m = s.match(regex); if (m) console.log(m[0]);

您還可以使用捕獲組並根據需要進行匹配:

--\s+\d+\s+--\s+(.*?), US\b

正則表達式演示

 const s = `[Radius: 4000 mi.] -- 61362 -- Spring Valley, IL, US`; const regex = /--\s+\d+\s+--\s+(.*?), US\b/; const m = s.match(regex); if (m) console.log(m[1]);

暫無
暫無

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

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