Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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 - Fatal编程技术网

Regex 查找具有空格的文件路径

Regex 查找具有空格的文件路径,regex,Regex,我正在尝试创建一个正则表达式来选择包含空格且不包含引号的文件路径。此外,我只希望路径以卷字母开头(例如,C:\、D:\、e:),并且我希望忽略路径后面的任何开关或命令 以下面的列表为例,我以粗体突出显示了我要匹配并返回的所有文本: C:\此路径包含空格\system.sys-switch/command C:\Thispathhasnospaces\filename.exe \sytem32\n这不是从AdriveLetter\something.doc开始的 D:\此路径也有空格\somet

我正在尝试创建一个正则表达式来选择包含空格且不包含引号的文件路径。此外,我只希望路径以卷字母开头(例如,C:\、D:\、e:),并且我希望忽略路径后面的任何开关或命令

以下面的列表为例,我以粗体突出显示了我要匹配并返回的所有文本:


C:\此路径包含空格\system.sys-switch/command

C:\Thispathhasnospaces\filename.exe

\sytem32\n这不是从AdriveLetter\something.doc开始的

D:\此路径也有空格\something.xlsx

“C:\我不在乎它是否用引号括起来\something.abc”-switch


到目前为止,我得出的结论是:

^\w:\(.+)(.\w\w\w)

哪种方式有效,但它选择有空格和无空格的路径。如果路径是四个字符的扩展名,例如.xlsx,它也不会选择完整的文件名

任何帮助都将不胜感激。如果你确实发布了一个更好的正则表达式,如果你添加了一些解释,这将非常有帮助,因为我正在努力学习它

谢谢

我会使用的正则表达式是

^\w:[^\s]+[\.]*[^\s]+
这将查找任何以字母数字开头且不包含空格的内容。

我会选择

^[A-Z]:\\.+\s.+\.\S+
  • ^
    是字符串开头的锚点
  • [A-Z]:\\
    匹配后跟冒号和反斜杠的字母
  • +
    匹配任何字符1次或多次
  • \s
    匹配单个空格
  • +\.\S+
    匹配任何后跟点和非空格的字符

请参见演示

嗨!感谢您的回复,但我希望路径中确实包含空格。不包含我要忽略的空格的路径。另外,我想忽略路径文件名部分之后的任何命令和开关。您对开关和命令的定义是什么?它总是以
-
/
开头,前面有空格?路径可以包含
{space}-
,那么
-
前面是空格,后面不是空格?变得复杂,但仍然不安全。。。(似乎不可能完全明确)嗯,也许更好的方式是我只对文件路径部分感兴趣。所以忽略文件名部分之后的任何内容。我明白了,当总是有文件名点扩展名时,这将起作用。是的!这似乎正是我需要的。另外,非常感谢您的演示。信息量很大。你把我的脸摇下来了!顺便说一句,你可以缩短你的正则表达式:
[^\s]
\s
@Bohemian是一样的