且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

正则表达式:一次性获取没有扩展名的文件名?

更新时间:2023-02-21 10:58:33

试试这个:

(.+?)(\.[^.]*$|$)

这将:

  • 捕获以点开头的文件名(例如 .logs 是名为 .logs 的文件,而不是文件扩展名),这在 Unix 中很常见.
  • 获取除最后一个点以外的所有内容:foo.bar.jpeg 获取foo.bar.
  • 处理没有点的文件:secret-letter 为您提供 secret-letter.
  • Capture filenames that start with a dot (e.g. .logs is a file named .logs, not a file extension), which is common in Unix.
  • Gets everything but the last dot: foo.bar.jpeg gets you foo.bar.
  • Handles files with no dot: secret-letter gets you secret-letter.

注意:正如评论者 j_random_hacker 所建议的那样,这与宣传的一样,但出于可读性目的,您可能希望在前面加上锚点.

Note: as commenter j_random_hacker suggested, this performs as advertised, but you might want to precede things with an anchor for readability purposes.