regex 如何使用正则表达式匹配文件名列表中的任何文件名和扩展名?

fnvucqvd  于 11个月前  发布在  其他
关注(0)|答案(4)|浏览(126)

考虑一个字符串中的文件名列表,看起来像(每个文件都有一个扩展名)
第一个月
我需要匹配的3个文件名,如:
file1.texdhdgs kdkd.csvf-i.le.jpg
下面的正则表达式几乎可以工作,但是:

  • 它在匹配项中包含尾随空格:
  • 当文件名中有.-时,它不会按预期工作
\b\s*([\w\s]+)\.\w+\s*\b

字符串
匹配:file1.texdhdgs kdkd.csvi.le
我需要对这个正则表达式模式做什么修改?
你可以在这里测试:https://regex101.com/r/r4zd0C/3

5n0oy7gb

5n0oy7gb1#

您可以使用

\w+(?:[\s-]+\w+)*(?:\.\w+)+

字符串
模式匹配:

  • \w+匹配1+字字符
  • (?:[\s-]+\w+)*可选重复1+空格字符或连字符和1+单词字符
  • (?:\.\w+)+.和1+字字符的一个或多个重复

Regex demo
或者更广泛地匹配空白边界(注意the lookbehind的支持有限)

(?<!\S)[^\s.]+(?:[^\S\r\n]+[^\s.]+)*(?:\.[^\s.]+)+(?!\S)


Regex demo

nmpmafwu

nmpmafwu2#

[\w]*.[\w]{3}我相信这是有效的(根据regex 101)。我是新来的,但它只匹配那些有扩展名的,而忽略了dhdg。
它将匹配多个字母和数字,然后是一个点和三个字母扩展名。

toiithl6

toiithl63#

\s*匹配零个或多个空格字符,因此它们会出现在匹配项中。
您可以使用

\w[\w\s\-]*\.\w+
(?<!\S)\w.*?\.\w+(?!\S)

字符串
参见regex demo #1regex demo #2

  • 详情 *:
  • \w-一个字字符
  • [\w\s\-]*-零个或多个单词、空格或连字符
  • \.-点
  • \w+-一个或多个单词字符。

  • (?<!\S)-左侧空白边界
  • \w-一个字字符
  • .*?-除换行符字符以外的任何零个或多个字符尽可能少
  • \.-点
  • \w+-一个或多个单词字符
  • (?!\S)-右侧空白边界
kt06eoxx

kt06eoxx4#

尝试以下 * 捕获模式 *。

\b(\S.*?)\.\w+(?=\s|$)

字符串

相关问题