我喜歡通過使用grep獲取一個程序調用khal輸出的日曆條目的約會描述。 khal的輸出是這樣的:如何在正則表達式中描述可選的負向預測?
20:30-22:30 13.05.2015: Manfred treffen Repeat: FREQ=WEEKLY;BYDAY=WE;WKST=MO
09.05. - 12.05.2015: Britt Besuch
在我想匹配Manfred treffen
和Britt Besuch
的例子。但是,正如您所看到的,第一個約會是重複約會,而khal則將這些信息添加到輸出中。在這種情況下,正則表達式必須確保從Repeat:
開始的每個整個部分都將被省略,但當然只有當它存在時纔會被忽略。
grep -oP "(?<=:)(.)+(?=Repeat: .+$)"
讓我 Manfred treffen
但不Britt Besuch
然而grep -oP "(?<=:)(.)+(?=Repeat: .+$|$)"
給了我兩個約會,但第一個與整個的說明「重複:」 ......包括一部分。
我似乎需要的是一個可選的lookahead。我在stackoverflow上發現了一個類似的問題,但並沒有真正理解這個方法(貪婪的匹配),也不可能爲我的情況採用它。
你並不需要去捕獲組。 –
這將匹配'Britt Besuch這是'09.05內的一個句子'。 - 12.05.2015:布里特Besuch這是一個句子' – Kasramvd
奇怪,在演示它的作品。在我的計算機上,但是我仍然得到所有「重複:」信息字符串,直到結尾 –