Sikuli (UI自動化測試工具)

.NET Framework 規則運算式

範例 1:取代子字串

假設郵寄清單包含的名稱有時候會包括稱謂 (Mr.、Mrs.、Miss 或 Ms.) 以及姓名。當您從清單產生信封標籤時,如果不想包括稱謂,就可以使用規則運算式來移除稱謂,如下列範例所示。

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));
   }
}
// The example displays the following output:
//    Henry Hunt
//    Sara Samuels
//    Abraham Adams
//    Nicole Norris

正規運算式樣式 (Mr.? |Mrs.? |Miss |Ms.? ) 會比對所出現的任何 "Mr "、"Mr. "、"Mrs "、"Mrs. "、"Miss "、"Ms " 或 "Ms. "。呼叫 Regex.Replace 方法會將相符的字串取代為 String.Empty;換句話說,就是將其從原始字串中移除。

Example 2: Identifying Duplicated Words Accidentally duplicating words is a common error that writers make.A regular expression can be used to identify duplicated words, as the following example shows.

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

The regular expression pattern \b(\w+?)\s\1\b can be interpreted as follows:

\b 從字緣開始。
(\w+?) 比對一或多個字元,但字元數愈少愈好。這些一起構成可稱之為 \1 的群組。
\s 比對空白字元。
\1 比對等同於名為 \1 之群組的子字串。
\b 比對字邊界。

範例 3:動態建立區分文化特性的規則運算式

下列範例說明規則運算式結合 .NET Framework 全球化功能所提供的彈性,功能有多麼強大。它會使用 NumberFormatInfo 物件來判定系統目前文化特性中的幣值格式,然後利用該資訊動態建構可從文字擷取幣值的規則運算式。針對每個比對,它會擷取僅包含數值字串的子群組,將其轉換成 Decimal 值,並計算執行總計。

results matching ""

    No results matching ""