簡體   English   中英

此正則表達式表達式有什么作用?

[英]What does this regex expression do?

我正在尋找一個錯誤的修復程序,在那里我找到了這個表達式:

 directoryPath = Regex.Replace(directoryPath, "[^\\w\\.@-]", "");

但是由於表達式的結果,目錄路徑中的所有高位ASCII字符都被弄亂了,我不擅長正則表達式並且不了解它,但是現在我必須解決此問題。

有人可以解釋一下這個正則表達式做什么嗎?

它取代了任何

  1. word character
  2. . (點)或
  3. @
  4. - (破折號)

    一無所有

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM