第一:Iknowthisquestionhasbeenbeatentodeath.捕捉重複組與在複雜的正則表達式的中間重複捕獲組
二:我看了所有資源(網絡編輯,RexEgg,regular-expressions.info等等......)我可以想到過去幾年,我仍然無法掌握這部分正則表達式。無論我使用哪種RegEx,它都不會爲我工作。
現在管家是出路:
我有大量的文字,我需要提取,我認爲正則表達式是非常適合的一些數據。
文本看起來像這樣:
2017年3月31日9點41分十八秒EDT [12708-4]參數:$ 1 = '0',$ 2 = 'ON',$ 3 =「ON 「
相當明顯,我要爲$1
,$2
和$3
值。這個特殊的例子有3個變量,但它通常是1和15
之間我希望有一個正則表達式,將捕獲以下內容:
- $ 1
- '0'
- $ 2
- 「ON 「
- $ 3
- 'ON'
這是我的正則表達式,其中第一場小組賽:
\d{4}.+\[[\d-]*\].+?parameters:\s((\$\d+)\s?=\s?(['\d+\w+]+))
,但沒有加號,括號和逗號組合產生接近我想要的任何東西。即使我從字符串中刪除逗號,然後將它們卡在一起,我也無法捕捉它。
這傢伙抓住了一切,但集團沒有任何意義:
\d{4}.+\[[\d-]*\].+?parameters:\s(((\$\d+)\s?=\s?(['\d+\w+]+),?\s?)+)
有人能在這裏結束我的痛苦和向我解釋如何捕捉重複文字的正則表達式,如果文本分離通過我不關心的角色?
你可能想看看'\ G '這在位置相匹配,以前的比賽結束了'。(?:?!\ G(^),|參數:)\ S +(\ $ \ d +)= '(\ w +)''應該有點你是什麼。尋找 –
我無法得到一個要麼工作還只捕獲一個 – Brandon
嘗試多個匹配/捕獲塞巴斯蒂安提到了一點修改的圖案:['(:?!\ G(^),|參數:) \ S *(\ $ \ d +)\ S * = \ S * '([^'] +)'\ S *'](https://regex101.com/r/3nHI53/1),它不會給你6組,因爲那裏的模式被定義只能有儘可能多的團體。它會給3場比賽×2組中的每個如果這種做法是不是你需要什麼,你就不能使用純的正則表達式得到它。 w ^帽子是編程語言? –