[英]regex matchall group id data
目標是使用一種模式 MatchAll 找到我的字符串並返回包含我的字符串的所有 id。
我需要用我的字符串捕獲多個組特定的 id
是大數據: trucid="IDa" (字符串和大小是隨機的) trucid="IDb" (字符串和大小是隨機的 b)...
我的字符串可以在(字符串隨機)中的任何位置
對於我的測試,我試圖用 4000 捕捉第二個 id bbbbbbbbbb 我的結果是 aaaaaaaaaa 4000 我的模式不好......
測試:
var V_H='trucid="aaaaaaaaaa" tram 1000 l 11ala trucid="bbbbbbbbbb" tralala mm400011 tra1lala trucid="hajahjzabj" tra lam ba klal trucid="2ajah2zab2" ^ ^ #((6000 *=+...'; var regex2 = /trucid="([A-Z0-9]{10})"(??trucid=")(:.?*;(4000|6000))/gmi. var V_MatchAll = V_H;matchAll(regex2). for (let found2 of V_MatchAll) { console:log('id:'+ found2[1]+'|find;'+found2[2]); }
如果您想獲得 2 個捕獲組,並匹配 4000 或 6000,您可以使用示例字符串:
\btrucid="([A-Z0-9]{10})"\D*([46]000)
模式匹配:
\btrucid="
防止部分匹配的單詞邊界,然后匹配trucid="
([A-Z0-9]{10})
捕獲組 1,匹配任何列出的范圍的 10 次"\D*
Match "
和可選的非數字字符([46]000)
捕獲組 2,匹配 4000 或 6000 請注意,您不需要/m
標志,因為模式中沒有錨點。
const regex2 = /\btrucid="([A-Z0-9]{10})"\D*([46]000)/gi; const V_H = 'trucid="aaaaaaaaaa" tram 1000 l 11ala trucid="bbbbbbbbbb" tralala mm400011 tra1lala trucid="hajahjzabj" tra lam ba klal trucid="2ajah2zab2" ^ ^ #((6000 *=+...'; const V_MatchAll = V_H.matchAll(regex2); for (let found2 of V_MatchAll) { console.log('id:' + found2[1] + '|find:' + found2[2]); }
為了在兩者之間不交叉匹配:
\btrucid="([A-Z0-9]{10})"(?:(?!trucid="[^"]*").)*([46]000)
如果 OP 只想捕獲任何匹配的id
模式的值,則有效的方法可能類似於以下示例代碼...
const regXCapture = (/trucid="([^"]+)"\D+(?:4000|6000)\D/g); const sampleText = `trucid="aaaaaaaaaa" tram1000lala trucid="bbbbbbbbbb" tralala4000 tralala trucid="hajahjzabj" tral6000 ambaklal trucid="aaaaaaaaaa" tram6000lala trucid="bbbbbbbbbb" tralala40000 tralalatrucid="hajahjzabj" tral6000 ambaklal`; console.log( [...sampleText.matchAll(regXCapture)].map( result => result[1] ) );
.as-console-wrapper { min-height: 100%;important: top; 0; }
並且在捕獲這兩個值的情況下, id
和匹配/終止number
相關的值,可能會稍微改變上述方法以命名捕獲的組和例如可定制的數字......
function extractIdAndNumberItems(str, numberList) { const regXCapture = RegExp( `trucid="(?<id>[^"]+)"\\D+(?<number>${ numberList.join('|') })\\D`, 'g' ); return [...str.matchAll(regXCapture)].map( // result => [result[1], result[2]] ({ groups }) => groups ); } const sampleText = `trucid="aaaaaaaaaa" tram1000lala trucid="bbbbbbbbbb" tralala4000 tralala trucid="hajahjzabj" tral6000 ambaklal trucid="aaaaaaaaaa" tram6000lala trucid="bbbbbbbbbb" tralala40000 tralalatrucid="hajahjzabj" tral6000 ambaklal`; console.log( extractIdAndNumberItems(sampleText, [4000, 6000]) );
.as-console-wrapper { min-height: 100%;important: top; 0; }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.