[英]Regex to group recursive pattern in string and return capture group as array
我有一個看起來像這樣的字符串: Hello:A1,A3,A4,AA04
現在我有一個看起來像這樣的正則表達式查詢:
/(?<g1>[A-Za-z]+):(?<g2>[A-Za-z0-9,]+)/
找到匹配項后,我可以像這樣訪問它:
"Hello:A1,A3,A4,AA04".match(/(?<g1>[A-Za-z]+):(?<g2>[A-Za-z0-9,]+)/).groups.g1 // outputs: Hello
好的...現在我也有g2
。 我需要一個數組中的g2
, ,
消失了。 現在在我的代碼中,我已經這樣做了:
"Hello:A1,A3,A4,AA04".match(/(?<g1>[A-Za-z]+):(?<g2>[A-Za-z0-9,]+)/).groups.g2.split(',') // outputs: [ 'A1', 'A3', 'A4', 'AA04' ]
現在的問題是:是否可以在沒有.split(',')
的情況下通過使用 Regex 來完成此操作並使其返回如下:
"Hello:A1,A3,A4,AA04".match(?).groups.g2 // would output: [ 'A1', 'A3', 'A4', 'AA04' ]
我知道我不是最擅長解釋這一點,但我試圖找到答案,我要么錯過它,要么不可能。 這不是關鍵或超級重要的,只是我的想法。 對不起這個可怕的標題。
運行 Node.js v13.2.0
添加了 ^ 以僅匹配字符串的開頭。 使用前瞻。
請注意,前瞻沒有很好的瀏覽器支持。
另外,我不知道/沒有測試過這個與 exec 循環的性能特征。 老實說,它看起來並不比拆分更干凈。 如果你想要一個單線,我想這就足夠了。
我記得在其他使用 RegEx 的平台上很長的字符串表現不佳。 但我最終還是求助於其他方法進行搜索。
console.log( "Hello:A1,A3,A4,AA04".match(/(^[A-Za-z]+(?=:))|((?=,?)([A-Za-z0-9]+))/g) )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.