正規表現を使用するための助けが必要start_patternとend_patternの間の文字列を抽出します。さらに、正規表現は、end_patternが存在しなければ、行の最後まですべての文字をgrepする必要があります。
Sample 1 : "BOOK1:book1A,book1B,book1C,book1D"
期待される結果:book1A、book1B、book1C、book1D
Sample 2 : "BOOK1:book1A,book1B,book1C,book1D|BOOK2:book2A,book2B,book2C,book2DA"
期待される結果:(1)book1A、book1B、book1C、book1D (2)book2A、book2B、book2C、book2DA
私は、文字列ターミネータが "|"のときに正規表現(以下に示す)を解決することができましたが、ターミネータがないときに解決することはできません
(?<=BOOK1:).*(?=|)
回答:
回答№1は2つかいます $
変更 .*
に .*?
(?<=BOOK1:||).*?(?=||$)
$
行または文字列の終わりをマークする
.*?
遅れてマッチする
例えば、入力
a|b|c|d|e
正規表現で
(?<=|).*(?=|)
それは一致するだろう b|c|d
正規表現で
(?<=|).*?(?=|)
それは一致するだろう
b
c
d