Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 用于匹配文件扩展名列表的正则表达式_Regex_Match - Fatal编程技术网

Regex 用于匹配文件扩展名列表的正则表达式

Regex 用于匹配文件扩展名列表的正则表达式,regex,match,Regex,Match,我希望有一个正则表达式,它可以匹配以管道分隔的文件扩展名列表,例如doc | xls | pdf。此列表也可以是单个扩展名,例如pdf,也可以是通配符*或?,我还想排除|位于列表的开头或结尾,并且与\/:“字符不匹配 我尝试了以下方法,但它不能解释一个*通配符 ^([^\\\/:“]\\[^\\:”])[^\/\\:“]*[^\\/\\:”]$ 我曾参加过一个在线测试,但似乎无法克服最后的障碍。如果有人能为我指出正确的方向,我将不胜感激。你可以用更小的构建块来构建它。一个扩展,不包括你提到的字符

我希望有一个正则表达式,它可以匹配以管道分隔的文件扩展名列表,例如
doc | xls | pdf
。此列表也可以是单个扩展名,例如
pdf
,也可以是通配符
*
,我还想排除
|
位于列表的开头或结尾,并且与
\/:“
字符不匹配

我尝试了以下方法,但它不能解释一个
*
通配符

^([^\\\/:“]\\[^\\:”])[^\/\\:“]*[^\\/\\:”]$


我曾参加过一个在线测试,但似乎无法克服最后的障碍。如果有人能为我指出正确的方向,我将不胜感激。

你可以用更小的构建块来构建它。一个扩展,不包括你提到的字符,将是:

[^\\<>/:"]+
这也可以自动匹配通配符,因为它们不是禁止的

要构造与这些列表分开的
|
,很容易:

[^\\<>/:"|]+
如果希望完整字符串与此匹配,请添加
^
$
锚定:

^[^\\<>/:"|]+(\|[^\\<>/:"|]+)*$
^[^\\/:“|]+(\\\\\\/:“|]+)*$

在您的示例中,除了通配符之外,扩展是否总是像alpha一样?它们也可以是mp4 | mp3例如,我尝试了您的建议,但在添加第一个|分隔符以添加第二个文件扩展名(即doc)时,该建议不匹配|xls@Neil:抱歉,忘了退出
|
。这似乎成功了,我还必须退出
/
,才能在我使用的在线测试仪中正常工作。
[^\\<>/:"|]+(\|[^\\<>/:"|]+)*
^[^\\<>/:"|]+(\|[^\\<>/:"|]+)*$