ボフダンペインタ:
私は自分のファイルに以下の行を持っています:
/rootfolder/test/a/b/c/magicword/blabla
/rootfolder/test/a/b/c
これらのすべての行が正規表現パターンと一致する必要があります。間加えて、私はグループを見つける必要がない/rootfolder
と/magicword
何があるかどうか、/magicword
最後まで- 。だから、上記の私の二行のために、第一グループはする必要があります/test/a/b/c
。
私が試してみました/rootfolder(?|(?>(/.*)(?>/magicword).*)|(/.*))
(/のエスケープで)。これは、いくつかのオンライン正規表現のバリデータに適していますが、今のところ何の運は、Javaでそれを使用しないように。
Javaを使用して、このような正規表現を作るチャンスはありますか?前もって感謝します!
編集:作業正規表現の例:https://regex101.com/r/cJkIJH/1。私はJavaで必要な同じ結果。
EDIT2:のような表情以下の答えのおかげで/rootfolder(.*?)(?:/magicword.*|$)
、私の条件のための完璧な作品。
anubhava:
あなただけのキャプチャグループ#1と、この正規表現と作品を使用し、ここで何を空想する必要はありません。
/rootfolder(.*?)(?:/magicword.*|$)
非キャプチャグループの(?:/magicword.*|$)
一致は行末か/magicword
と後行の残りの部分.*?
(怠惰な一致)。