繁体   English   中英

从字符串解析目录

[英]Parse directories from a string

首先,我花了三个小时试图解决这个问题。 另外,请不要建议不要使用正则表达式。 我很欣赏其他评论,可以轻松使用其他方法,但是我正在尽可能地练习正则表达式。

我正在使用VB.Net

示例字符串:

"Hello world this is a string C:\Example\Test E:\AnotherExample"

图案:

"[A-Z]{1}:.+?[^ ]*"

工作正常。 如果目录名包含空格怎么办? 我试图匹配所有以1个大写字母开头,后跟冒号然后是其他任何东西的字符串。 需要对此进行匹配,直到出现空格,1个大写字母和一个冒号为止。 但是然后再次匹配相同的序列。

希望我有道理。

怎么样“ [AZ] {1}:((?![AZ] {1}:)。)*”,应该在下一个驱动器号和冒号之前停止?

那“?!” 根据正则表达式匹配不包含单词的行的“负环顾”或“零宽度负向超前” 是解决正则表达式缺乏逆匹配的方法。

不必太挑剔,但是大多数文件系统都不允许使用少量字符(如<> / \\ :?“),因此文件路径的正确模式应更像[AZ]:\\\\((?![AZ]{1}:)[^<>/:?"])*

提出的另一个重要点是您希望如何解析“ hello路径为c:\\ folder \\ file.extension,这不是path:P的一部分”之类的输入? 当您开始尝试分析时未指定允许的输入范围或解析器接受的语法时,通常会遇到此问题。 这个特定问题似乎是临时性的,因此我并不希望您提出语法或定义特定消息的编码方式。 但是,下次您遇到解析问题时,请查看是否可以首先定义允许的消息及其含义(语法和语义)。 我认为您会发现,一旦定义了允许的消息的结构,解析几乎是微不足道的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM