我在 Sublime Text 中有以下 html 元素:
<div class="exg"><div><strong class="syn">investigate</strong><span class="syn">, conduct investigations into, make inquiries into, inquire into, probe, examine, explore, research, study, look into, go into</span></div>
我想使用正則運算式來選擇此元素中第 5 個逗號之后的內容,并在
</span></div>. 所以,在這種情況下,我想選擇:
, examine, explore, research, study, look into, go into
到目前為止,我能夠撰寫這個正則運算式,它有效:
(<div class="exg"><div><strong class="syn">(\w )((\s)?(\w )?) </strong><span class="syn">((\,((\s)?(\w )?) )?){5})
這使我可以在需要選擇的部分之前選擇該部分。我試圖以積極的方式使用它,但它不起作用,我不知道如何修復它。這是我嘗試過的:
(?<=(<div class="exg"><div><strong class="syn">(\w )((\s)?(\w )?) </strong><span class="syn">((\,((\s)?(\w )?) )?){3}))((\,?((\s)?(\w )?) ?) )
uj5u.com熱心網友回復:
你大量使用括號。此外,您在逗號之間捕捉單詞的表達可能會更簡單。用非捕獲組替換您的組,您將使用此正則運算式在第一個(也是唯一一個)組中獲得預期匹配:
(?<=<div class="exg"><div><strong class="syn">)(?:\s?\w)*<\/strong><span class="syn">(?:,(?:\s?\w)*){4}(.*?)(?=<\/span><\/div>)
順便說一句,如果您想捕獲第 5 個逗號,我認為您的量詞應該是{4}(但我可能誤解了)
檢查演示
更新:如果您要洗掉匹配的組(即用空字串替換它)。做相反的事情:在之前和之后建立一組:
(<div class="exg"><div><strong class="syn">(?:\s?\w)*<\/strong><span class="syn">(?:,(?:\s?\w)*){4}).*?(<\/span><\/div>)
Demo
然后在您的編輯器中替換為\1\2(一個接一個地分組,中間沒有先前匹配的字串)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/336640.html
標籤:正则表达式
