[英]What does this regex expression do?
我正在尋找一個錯誤的修復程序,在那里我找到了這個表達式:
directoryPath = Regex.Replace(directoryPath, "[^\\w\\.@-]", "");
但是由於表達式的結果,目錄路徑中的所有高位ASCII字符都被弄亂了,我不擅長正則表達式並且不了解它,但是現在我必須解決此問題。
有人可以解釋一下這個正則表達式做什么嗎?
它取代了任何非
word character
或 .
(點)或 @
或 -
(破折號)
一無所有 。
INPUT
var directoryPath = @"C.@-(:\abc123/\def.foo";
OUTPUT
C.@-abc123def.foo
修改后的代碼替換為space
和相應的輸出
var directoryPath = @" @.-abcd efghi(^-^)/\:jklmNO@.-PQRSTUVW XYZ0123456789@.-";
Console.WriteLine(directoryPath);
//note change here
//second argument to Replace function is chanted from "" to " "
directoryPath = Regex.Replace(directoryPath, "[^\\w\\.@-]", " ");
Console.WriteLine(directoryPath);
輸出:
@.-abcd efghi(^-^)/\:jklmNO@.-PQRSTUVW XYZ0123456789@.-
@.-abcd efghi - jklmNO@.-PQRSTUVW XYZ0123456789@.-
似乎您遇到了編碼問題。 例如,當字符串真正存儲為UTF-8時, Regex
可以將其視為ASCII。
它似乎正在從directoryPath
中刪除不是單詞字符(數字,字母,下划線),句點,@符號或連字符的第一個字符。
我剛剛使用C:\\Scratch\\Filename.txt
了嘗試,並留下了CScratchFilename.txt
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.