2
中的同一組我必須解析一個字符串,格式爲!info1!info2!
,並且info2
是可選的。如何強制兩種模式捕獲到regEx
我想捕獲,如果需要,使用正則表達式,info1
和info2
。
我想出了以下模式:
!([^!]*?)!(.*?)!|!(.*?)!
它的工作原理,但我不滿意的結果:
!foo!bar! -> Group1: foo Group2:bar
!foo! -> Group3: foo
(https://regex101.com/r/D9d6YP/1)
在這兩種表達,foo
意味着同樣的事情,而且是之後以相同的方式進行處理。我想在同一組中捕捉它,不管是否有第二組。
我曾嘗試使用命名捕獲組,但它似乎是他們不能被重用
!(?<info1>[^!]*?)!(?<info2>.*?)!|!(?<info1>.*?)!
失敗,一個子模式名稱必須是唯一的錯誤信息」。
有什麼辦法可以捕捉同一組中的不同模式嗎?
Pleae提供沒有可選部分的示例字符串。 – HBP
您的regex101鏈接似乎暗示您正在使用PCRE模式?那是對的嗎? –
不,它是.NET,regex101中的風格只是默認的。 – Maxime