我想在python中寫一個正則表達式,可以返回我組相似的模式。下面是一些樣本輸入 -無法制定與循環模式的正則表達式
class:('MF YY' or 'XX') and status:('Active' or 'Pending')
class:('MF YY' or 'XX') and status:('Active' or 'Pending') and available:1
available:1
available:1 or class:('MF YY' or 'XX' or 'YY')
*status:'Pending'
而且很多這樣的組合。我想輸出將在下面的格式 -
輸入:class:('MF YY' or 'XX' or 'YY') and status:('Active' or 'Pending') or available:1
輸出:
group 1: class:('MF YY' or 'XX' or 'YY')
group 2: and
group 3: status:('Active' or 'Pending')
group 4: or
group 5: available:1
這是我寫的正則表達式 -
(\w*\:\(.*?\))(?:\s*(and|or)*\s*)
這將返回我 -
group 1: class:('MF YY' or 'XX')
group 2: and
我正則表達式改變 -
(\w*\:\(.*?\))(?:\s*(and|or)*\s*)+(\w*\:\(.*?\))
返回 -
group 1: class:('MF YY' or 'XX')
group 2: and
group 3: status:('Active' or 'Pending')
但是,如果添加了更多的表達我的方法上面沒有可擴展性。我嘗試添加*/+進行重複發佈,但這並不奏效。
如何實現重複模式,3種類型 -
- 領域:( '{}東西' 和/或{}的東西......)
- 字段:{}東西
- 和/或結合這些較小表達式的運營商
在此先感謝您提供的所有幫助。
沒有擴展的解決方案,可以捕獲在一個單獨的捕獲組的一切 - 除非你編寫代碼來生成正則表達式。爲什麼不重複將相同的模式應用於輸入,直到找到所有匹配? –