我真的很想理解 RegEx,我覺得這個問題應該簡單明了,但出于某種原因,我真的很難得到我需要的東西。我在這里瀏覽了至少 20 篇文章,但沒有一篇能讓我到達那里。
我需要的是在回顧之后捕獲所有單詞,以便我可以計算它們。這是我到目前為止所得到的:
正則運算式:/(?<=\> )(\w*)/gi
字串:"Mon Jan 11 11:00 <ralph> Hello all!!"
捕獲 之后的所有單詞"> ",所以在上面我只希望捕獲組單獨捕獲“Hello”和“all”,這樣我就可以統計組并獲取用戶名后面的單詞數,在本例中為“<ralph>”。
上面的 RegEx 正是我目前正在使用的,它當然只是捕獲第一個單詞。我也嘗試將 * 和 放在捕獲組之后,但由于某種原因這會使捕獲組無效。
我也試過(?<=\> )((\w*)(?:\W ))*了,雖然這確實匹配了后面的所有內容,但它只捕獲了“all!!” 和 2 個不同捕獲中的“全部”。我不知道為什么“!!” 正在回傳任何捕獲,因為我讓它僅與 (?:) 匹配。
編輯:已解決。我采用的解決方案是 /(?<=> .*)(\w )/g,因為它比 MikeM 下面的解決方案更優雅,但它們都實作了相同的目標。如果 Wiktor 沒有作為答案發布(因為這主要是他們的解決方案),我很快就會接受 Mike 的。
uj5u.com熱心網友回復:
(?<=\> )(. )對我來說很好,它Hello all!!從Mon Jan 11 11:00 <ralph> Hello all!!
Is it what you need 中捕獲?
uj5u.com熱心網友回復:
之后有規律的模式>還是隨機的?
無論如何,這(?<=\> )(.*)符合您的示例。
uj5u.com熱心網友回復:
例如
const str = "Mon Jan 11 11:00 <ralph> Hello all. How are you?";
console.log( str.match(/(?<=\> (?:\w \W )*)\w /g) );
我不知道為什么“!!” 正在回傳任何捕獲,因為我讓它僅與 (?:) 匹配。
是的,但它也被第一個捕獲組捕獲。例如,如果"x"與 匹配((?:x)),則第一個捕獲組將包含"x",即使它也在第二個非捕獲組內。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/459410.html
標籤:javascript 正则表达式
上一篇:javascript-如何從FormData物件[objectObject]中獲取嵌套物件
下一篇:為什么過濾器函式回傳一個空陣列?
