[英]Regular Expression using character “-” in C#
我在C#中使用VS 2012和RegExp。
我有一個這樣的正則表達式:
^CREATE OR REPLACE PACKAGE ([\w]+).([\w]+) IS
我從文件中讀取contents
。
我性格有問題-
Test_A_B
可以。
Test-A_B
是KO 。
我嘗試使用Regex.Escape
但這仍然是錯誤的。
單元測試代碼:
var pattern1 = @"^CREATE OR REPLACE PACKAGE ([\w]+).([\w]+) IS";
var regexPackage = new Regex(pattern1);
var contents = @"CREATE OR REPLACE PACKAGE ZZZ.Test_A_B IS";
match1 = regexPackage.Match(contents);
Assert.IsTrue(match1.Success);
Assert.AreNotEqual(0, match1.Groups.Count);
Assert.AreEqual("Test_A_B", match1.Groups[2].Value);
contents = @"CREATE OR REPLACE PACKAGE ZZZ.Test-A_B IS";
//contents = Regex.Escape(contents);
match1 = regexPackage.Match(contents);
Assert.IsTrue(match1.Success); <===== FAILS
Assert.AreNotEqual(0, match1.Groups.Count);
Assert.AreEqual("Test-A_B", match1.Groups[2].Value);
有什么建議么?
\\w
包括字母數字字符和下划線。 它不包括破折號。
只需將正則表達式中的[\\w]+
替換為[-\\w]+
即可包含破折號。
作為附帶說明,破折號在字符類中具有特殊含義。 它要么必須是該類中的第一個,要么是最后一個,或者以反斜杠進行轉義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.