2015-09-02 47 views
1

我在尋找單個正則表達式來提取文本塊,該文本塊可以是,其中包含可選結尾。這裏的挑戰只是使用單個正則表達式。使用正則表達式查找具有可選結尾的模式

輸入如下:

Anchor: This is the text I want to extract   A/C : 2015-5-20 
Anchor: This is the text I want to extract   

我目前使用下面的正則表達式

Anchor:(?<extact>.*)(A\/C) 

結果如下所示:

enter image description here

如果我做A/C塊可選,Anchor:(?<extact>.*)(A\/C)? usin克?匹配到達長:

它看起來如下: enter image description here

任何想法如何優雅,配有單正則表達式解決這個問題。另外一個制約因素是,我想在正則表達式命名塊,(這裏extact

你可以找到regex101示例代碼:https://regex101.com/r/wH5iQ4/1

+0

您是否也可以發佈您正在尋找的完全匹配?我的意思是首選輸出。我不確定我是否完全理解您在此嘗試實現的目標。 –

+0

「A/C」前的空格是否一致? – vks

+0

空調在A/C之前不一致,但也不相關。我的意圖是從'Anchor:'到'A/C'或者直到行末(包括空格)提取所有內容。 –

回答

1
Anchor:(?<extact>.*?)\s*(?=A\/C|$) 

您可以使用lookahead here.See的演示。

https://regex101.com/r/wH5iQ4/3

+0

稍微好一點:'Anchor :(?。*?)(?= \ s * A \/C | \ s * $)' – Amit

+0

任何方式我都可以避免改變子表達式從'(?。* )'到'(?。*?)'?在我的生成正則表達式的應用程序邏輯中,這個子表達式應該保持靜態 –