私は正規表現で非常に迷っています。それは私にとってただの黒魔術です。必要なものは次のとおりです。
- ファイル名があります: some_file.jpg
- 次の形式になっている可能性があります: some_file_p250.jpg
- ファイルに一致する単純な形式の正規表現: /^([a-zA-Z_-0-9]+).(jpg|jpeg|png)$/
- 高度な形式のファイルに一致する正規表現: /^([a-zA-Z_-0-9]+)(_[az]?[0-9]{2,3}).(jpg|jpeg|png )$/
私の質問は次のとおりです。「(_[az]?[0-9]{3,4})」の部分をオプションにするにはどうすればよいですか? 次のように、2 番目のグループに疑問符を追加してみました。
/^([a-zA-Z_\-0-9]+)(_[a-z]?[0-9]{3,4})?\.(jpg|jpeg|png)$/
パターンは機能しますが、常に最初のグループの 2 番目のグループのコンテンツをキャプチャし、2 番目のグループは空のままにします。
ファイル名、高度な部分 (_p250)、および拡張子を個別にキャプチャするにはどうすればよいですか? 最初のグループの貪欲さが関係していると思いますが、私は完全に間違っている可能性があり、たとえ私が正しいとしても、それを解決する方法はまだわかりません.
ご感想ありがとうございます