次のコンマ区切りリストでファイル名を検索しようとしています。
text.txt,temp_doc.doc,template.tmpl,empty.zip
Java の正規表現の実装を使用します。出力の要件は次のとおりです。
- ファイル名のみを表示し、それぞれの拡張子は表示しません
- 「temp_」で始まるファイルを除外する
次のようになります。
文章
テンプレート
空の
これまでのところ、最初のタスクに対処するために多かれ少なかれ満足のいく正規表現を書くことができました。
[^\\.,]++(?=\\.[^,]*+,?+)
2 番目の要件に準拠させるための最良のオプションは、ルックアラウンド構造を使用することですが、信頼できる最適化された式を記述する方法がわかりません。次の正規表現は必要なことを行っているように見えますが、明示的な最大ファイル名長に依存する以外の理由がなければ、明らかに欠陥のあるソリューションです。
(?!temp_|emp_|mp_|p_|_)(?<!temp_\\w{0,50})[^\\.,]++(?=\\.[^,]*+,?+)
PS私は正規表現を数日間しか勉強していないので、この初心者スタイルの過度に複雑なコードを笑わないでください:)