考虑一个字符串中的文件名列表,看起来像(每个文件都有一个扩展名)
第一个月
我需要匹配的3个文件名,如:file1.tex
dhdgs kdkd.csv
f-i.le.jpg
下面的正则表达式几乎可以工作,但是:
- 它在匹配项中包含尾随空格:
- 当文件名中有
.
或-
时,它不会按预期工作
\b\s*([\w\s]+)\.\w+\s*\b
字符串
匹配:file1.tex
dhdgs kdkd.csv
i.le
我需要对这个正则表达式模式做什么修改?
你可以在这里测试:https://regex101.com/r/r4zd0C/3
4条答案
按热度按时间5n0oy7gb1#
您可以使用
字符串
模式匹配:
\w+
匹配1+字字符(?:[\s-]+\w+)*
可选重复1+空格字符或连字符和1+单词字符(?:\.\w+)+
.
和1+字字符的一个或多个重复Regex demo
或者更广泛地匹配空白边界(注意the lookbehind的支持有限)
型
Regex demo的
nmpmafwu2#
[\w]*.[\w]{3}我相信这是有效的(根据regex 101)。我是新来的,但它只匹配那些有扩展名的,而忽略了dhdg。
它将匹配多个字母和数字,然后是一个点和三个字母扩展名。
toiithl63#
\s*
匹配零个或多个空格字符,因此它们会出现在匹配项中。您可以使用
字符串
参见regex demo #1和regex demo #2。
\w
-一个字字符[\w\s\-]*
-零个或多个单词、空格或连字符\.
-点\w+
-一个或多个单词字符。和
(?<!\S)
-左侧空白边界\w
-一个字字符.*?
-除换行符字符以外的任何零个或多个字符尽可能少\.
-点\w+
-一个或多个单词字符(?!\S)
-右侧空白边界kt06eoxx4#
尝试以下 * 捕获模式 *。
字符串