日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Ultrapico Expresso工具學(xué)習(xí)正則表達(dá)式

 昵稱9283147 2016-05-20

引用:Ultrapico Expresso是一個非常強(qiáng)大的正則表達(dá)式構(gòu)建、測試以及代碼生成工具。它能夠?qū)δ銟?gòu)建的正則表達(dá)式進(jìn)行解析、驗證,并輸出解析結(jié)果,提供性能測試工具,支持C#、VB等代碼生成,最重要的是,他提供了一個非常方便強(qiáng)大的正則表達(dá)式語法構(gòu)建面板,即使你對正則表達(dá)式生疏了,也能在它的幫助下構(gòu)建出你想要的正則模式來。而且,它還免費(fèi)獲取授權(quán)碼,無需費(fèi)心找破解了。軟件里自帶的幫助文檔以及正則表達(dá)式庫可以幫助你快速從正則菜鳥升級為正則高手。


最新版本的Ultrapico Expresso提供下面這些強(qiáng)大的功能:

  • 通過選擇預(yù)編寫代碼片段來創(chuàng)建正則表達(dá)式
  • 可以通過手動輸入或者從文件中導(dǎo)入兩種方式來測試文本
  • 在樹形結(jié)構(gòu)中顯示匹配,顯示捕獲組以及組內(nèi)所有捕獲
  • 加亮源文件中的匹配文本
  • 自動查找正則表達(dá)式的語法錯誤
  • 生成VB,C#或C++代碼
  • 提供常用正則表達(dá)式庫
  • 優(yōu)化正則表達(dá)式
  • 更多...


首先看Expresso的操作界面:


可以看到打開軟件時首先是Test Mode, 用戶可以在這里進(jìn)行正則表達(dá)式的驗證,并且提供了Regex Analyzer的功能,用戶可以很方便的查看自己書寫的正則式的一些細(xì)節(jié)。除了Test Mode, 還有更為強(qiáng)大的Design Mode與Expression Library(個人覺得從那個Expression Library里能學(xué)到很多知識),具體的使用方法大家自己體會。 你會發(fā)現(xiàn),通過這個工具,學(xué)習(xí)正則表達(dá)式的曲線會平滑一些的。

更多的學(xué)習(xí)心得待到認(rèn)真學(xué)好RE與這個工具后再分享。--->To be Continued.

 

一、.Net中的正則表達(dá)式(MSDN)

不同語言、框架中的正則表達(dá)式的語法規(guī)則有所不同,這里只要討論的是.net平臺下正則表達(dá)式的相關(guān)。.net中使用正則表達(dá)式處理文本的中心構(gòu)件是正則表達(dá)式引擎,該引擎在 .NET Framework 中由 System.Text.RegularExpressions.Regex 對象表示。 使用正則表達(dá)式處理文本至少要求向該正則表達(dá)式引擎提供以下兩方面的信息:

  • 要在文本中標(biāo)識的正則表達(dá)式模式(Pattern),在 .NET Framework 中,正則表達(dá)式模式用特殊的語法或語言定義,該語法或語言與 Perl 5 正則表達(dá)式兼容,并添加了一些其他功能,例如從右到左匹配。。
  • 要為正則表達(dá)式模式分析的文本。

 

Regex 類的方法使您可以執(zhí)行以下操作:

  • 通過調(diào)用 IsMatch 方法確定輸入文本中是否具有正則表達(dá)式模式匹配項。
  • 通過調(diào)用 Match 或 Matches 方法檢索匹配正則表達(dá)式模式的一個或所有文本匹配項。 第一個方法返回提供有關(guān)匹配文本的信息的 Match 對象。 第二個方法返回 MatchCollection 對象,該對象對于在分析的文本中找到的每個匹配項包含一個 Match 對象。
  • 通過調(diào)用 Replace 方法替換匹配正則表達(dá)式模式的文本。

 

先用例子來具體說明.net中Regex類的使用方法:

例子一:替換子字符串

1
2
3
4
5
6
7
8
9
10
11
12
13
14
using System;
using System.Text.RegularExpressions;
public class Example
{
   public static void Main()
   {
      string pattern = "(Mr\\.? |Mrs\\.? |Miss |Ms\\.? )";
      string[] names = { "Mr. Henry Hunt", "Ms. Sara Samuels",
                         "Abraham Adams", "Ms. Nicole Norris" };
      foreach (string name in names)
         Console.WriteLine(Regex.Replace(name, pattern, String.Empty));
   }
}

正則表達(dá)式模式 (Mr\.? |Mrs\.? |Miss |Ms\.? ) 可匹配任何“Mr”、“Mr.” 、“Mrs”、“Mrs.” 、“Miss”、“Ms”或“Ms.” . 對 Regex.Replace 方法的調(diào)用會將匹配的字符串替換為 String.Empty;換句話說,它從原始字符串中將其移除.


例子二:標(biāo)示重復(fù)的單詞

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using System;
using System.Text.RegularExpressions;
public class Class1
{
   public static void Main()
   {
      string pattern = @"\b(\w+?)\s\1\b";
      string input = "This this is a nice day. What about this? This tastes good. I saw a a dog.";
      foreach (Match match in Regex.Matches(input, pattern, RegexOptions.IgnoreCase))
         Console.WriteLine("{0} (duplicates '{1})' at position {2}",
                           match.Value, match.Groups[1].Value, match.Index);
   }
}
// The example displays the following output:
//       This this (duplicates 'This)' at position 0
//       a a (duplicates 'a)' at position 66

正則表達(dá)式模式 \b(\w+?)\s\1\b 可以解釋如下:

 \b:   在單詞邊界處開始
 (\w+):   匹配一個或多個單詞字符,它們一起構(gòu)成可稱為\1的組
 \s:   與空白字符匹配
 \1:   與等于名為\1的組的子字符串匹配
 \b:   與字邊界匹配

通過將正則表達(dá)式選項設(shè)置為 RegexOptions.IgnoreCase,調(diào)用 Regex.Matches 方法. 因此,匹配操作不區(qū)分大小寫,此示例將子字符串“This this”標(biāo)識為重復(fù).

 

二、RE學(xué)習(xí)資料:

MSDN

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多