我有以下運算式:
[檔案[_id=5f9ecf8ca9bec5549493ba7d,·policy_name=xxx,·is_mobile=false, 檔案[_id=6090fead53bc363849fce989,·policy_name=yyy,·is_mobile=true, 檔案[_id=682,123_mobile=false,·policy_mobile=true, 檔案[_id=682,1216c=false,·policy_mobile=false,·is_mobile=false,檔案[_id=6090fead53bc363849fce989] [_id=619cf729ea016d1e3336e903,·policy_name=xyz,·is_mobile=false]
我只想捕獲第一個檔案 ID(即 5f9ecf8ca9bec5549493ba7d)。我試過這個正則運算式 -(?<=Document\[_id=).*?[^,]*但它會回傳所有的檔案 ID。
1).如何從運算式中捕獲檔案 id 的第一個/第二個(第 N 個匹配)?
2)。是否可以使用正則運算式 AND 運算子來查找帶有“is_mobile=true”的檔案 ID?
(即 5f9ecf8ca9bec5549493ba7d & true)
非常感謝任何幫助
編輯:我正在使用https://regex101.com/
這是我嘗試捕獲第一次/第二次(第 n 次出現的檔案 ID(我只需要數字)的鏈接 - https://regex101.com/r/ZnYRhq/1
uj5u.com熱心網友回復:
沒有列出語言,但一種方法可能是使用捕獲組作為您想要的值,并使用錨點開始模式^以斷言字串的開頭。
對于第一個檔案 ID:
^.*?\bDocument\[_id=([^\]\[\s,] )
正則運算式演示
對于具有的第一個檔案 ID is_mobile=true(假設鍵值對的順序與示例中給出的一樣,并且在相同的左方括號和右方括號內)
^.*?\bDocument\[_id=([^\]\[\s,] ),[^\]\[]*\bis_mobile=true\b
模式匹配:
^字串的開始.*?\bDocument\[_id=匹配第一次出現Document[_id=(捕獲組 1[^\]\[\s,]匹配 1 次除][空白字符或,
)關閉第 1 組,[^\]\[]*匹配逗號和除]and以外的可選字符[\bis_mobile=true\bis_mobile=true單詞邊界之間的匹配
正則運算式演示
或者對單個(非全域)匹配使用環視:
(?<=Document\[_id=)[^,]*(?=,[^][]*\bis_mobile=true\b)
正則運算式演示
uj5u.com熱心網友回復:
這個怎么樣?
(?:^\[Document\[_id=)([^,] )為了第一?
對于第 n 個,您需要使用捕獲組,但如何執行此操作取決于語言/框架。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/396629.html
標籤:正则表达式
