一つの単語から別のまたは末尾に文字列の一部を取得します。

ボフダンペインタ:

私は自分のファイルに以下の行を持っています:

/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と後行の残りの部分.*?(怠惰な一致)。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=335871&siteId=1