簡體   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