有沒有什麼辦法來解析複雜的正則表達式(包含幾個named groups
以及一些numbered groups
和non-capturing groups
)和大約每groupname
或圖案文字一起groupnumber
報告。解析一個正則表達式模式
想,我有這樣的正則表達式:
(?im)(?<x>\b[a-s03]+\b)(?-i)(?<a>\p{L}+?,(?<b>.+?:(?<c>.+?;(?<d>.+?(?:\d|sample-text|(\k'x'|sos30))))))
而且我喜歡解壓:=
Named groups:
x==>(?<x>\b[a-s03]+\b)
a==>(?<a>\p{L}+?,(?<b>.+?:(?<c>.+?;(?<d>.+?(?:\d|sample-text|(\k'x'|sos30))))))
b==>(?<b>.+?:(?<c>.+?;(?<d>.+?(?:\d|sample-text|(\k'x'|sos30)))))
c==>(?<c>.+?;(?<d>.+?(?:\d|sample-text|(\k'x'|sos30))))
d==>(?<d>.+?(?:\d|sample-text|(\k'x'|sos30)))
Numbered groups:
1==>(\k'x'|sos30)
Non-capturing-groups:
1st==>(?:\d|sample-text|(\k'x'|sos30))
目的本要求:
我有一個複雜RegEx模式的大型數據庫。之前編寫的程序在編寫這些複雜模式時沒有使用任何註釋[(?#...)
],而且在這些模式中不存在linebreaks
。我必須在某些情況下修改這些模式,並且必須在這些模式中使用註釋。現在它就像是在乾草堆裏尋找針。我完全無法爲此使用RegEx。所以,我傾向於在這種情況下使用解析器。
我的嘗試:
我試圖GetGroupNames
和GetGroupNumbers
收集用於這一目的。我只能提取groups
的Names/Numbers
,但不能提取相應的文本模式。
我正在尋找非RegEx解決方案/一些提示。
我不知道任何現有解析正則表達式的解決方案。儘管如果你只是簡單地循環一遍,那麼自己製作類似的東西可能不是非常困難,但要捕捉左括號並尋找相應的右括號。基於文本模式,你可以看到它是什麼類型的組。 – Patrickdev
@Patrickdev:謝謝你,給你的時間評論。實際上,我描述的例子是一個非常簡單的例子,根本沒有「括號」,因爲實際模式更加複雜(主要是嵌套結構和大量括號)。但是,是的,我同意你的建議,準備一個新的Parser。但是,這將會像重新發明輪子一樣。當然,如果沒有其他解決方案,我會考慮它。 – Cylian
看看http://www.regex101.com - 這裏可能有幫助。 –