簡體   English   中英

在C#中使用字符“-”的正則表達式

[英]Regular Expression using character “-” in C#

我在C#中使用VS 2012和RegExp。
我有一個這樣的正則表達式:

^CREATE OR REPLACE PACKAGE ([\w]+).([\w]+) IS

我從文件中讀取contents

我性格有問題-

Test_A_B可以。
Test-A_BKO

我嘗試使用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.

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