我正在使用以下模式:
我正在编写以下正则表达式。
Notif[0]:
some text multiple line
Notif[1]:
multiple line text
Notif[2]:
text again
Notif[3]:
text again
Finish
我正在编写以下正则表达式。
set notifList [regexp -inline -all -nocase {Notif\[\d+\].*?(?=Notif|Finish)} $var]
它没有给出期望的输出
需要的输出
I need a list with each `Notif`block
Notif[\d+][^NF]*(?:(?:N(?!otif)|F(?!inish))[^NF]*)*
,但它不太易读。但是,它更有效率。 - Wiktor Stribiżew?
如何帮助? - Sumit+
匹配尽可能多的1个或多个字符。因此,您模式中的最后一个.*?
匹配到最后一个Finish
或Notif
之前的所有文本。在+
后添加?
使.*?
保持其懒惰含义,匹配到第一个Notif
或Finish
。 - Wiktor Stribiżew(?=…)
是其中一个简单的情况)。 - Donal Fellows