簡體   English   中英

在 Perl 中解碼正則表達式

[英]Decoding a regular expression in Perl

我正在嘗試解碼以下 Perl 正則表達式:

$fname =~ /\/([^\/]+)\.txt$/

我們想在這里匹配什么?

這是你如何分解它。

  • \\/ - 文字字符/
  • (...) - 后跟一個將被捕獲到$1
    • [ ... ] - 一個字符類
      • ^ - 在字符類中,這意味着取指定集合的​​反轉
      • \\/ - 文字字符/
    • + - 一次或多次
  • \\. - 文字字符.
  • txt - 文字字符串txt
  • $ - 字符串的結尾

因此,換句話說,這是試圖匹配“任何帶有/后跟一個或多個不是/字符,后跟.txt ,后跟字符串末尾,並將.txt之前的部分放入$1

\/([^\/]+)\.txt

正則表達式可視化

此正則表達式匹配文件名,因為它存在於路徑中

  • 減去擴展名,和
  • 僅當(或從where開始)路徑以右斜杠開頭時。

例子:

\folder\path\file.txt

沒有什么是匹配的。

folder/path/file.txt

file.txt匹配(並且file被放置在捕獲組 1 中: $1 )。

/folder/path/file.txt

同樣, file.txt匹配(並捕獲file )。

您可以在 Debuggex 上自行嘗試

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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