C# 使用字符“-”;在C中#

C# 使用字符“-”;在C中#,c#,regex,C#,Regex,我在C#中使用VS 2012和RegExp。 我有这样一个正则表达式: ^CREATE OR REPLACE PACKAGE ([\w]+).([\w]+) IS 我从文件中读取内容 我对字符- 测试A\u B正常。 Test-A\u B是KO 我试过使用Regex.Escape,但还是错了 单元测试代码: var pattern1 = @"^CREATE OR REPLACE PACKAGE ([\w]+).([\w]+) IS"; var regexPackage = new Regex(

我在C#中使用VS 2012和RegExp。
我有这样一个正则表达式:

^CREATE OR REPLACE PACKAGE ([\w]+).([\w]+) IS
我从文件中读取内容

我对字符
-

测试A\u B
正常。
Test-A\u 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);
var pattern1=@“^CREATE或REPLACE包([\w]+)。([\w]+)是”;
var regexPackage=newregex(pattern1);
var contents=@“创建或替换包ZZZ.Test_A_B IS”;
match1=regexPackage.Match(内容);
Assert.IsTrue(match1.Success);
Assert.arnotequal(0,match1.Groups.Count);
Assert.AreEqual(“Test_A_B”,match1.Groups[2].Value);
contents=@“创建或替换包ZZZ.Test-A_B IS”;
//contents=Regex.Escape(contents);
match1=regexPackage.Match(内容);

Assert.IsTrue(match1.Success)
\w
包括字母数字字符和下划线。它不包括破折号

只需将正则表达式中的
[\w]+
替换为
[-\w]+
即可包含破折号


作为旁注,破折号在字符类中有特殊的含义。它要么是类中的第一个,要么是最后一个,要么用反斜杠转义。

\w
包括字母数字字符和下划线。它不包括破折号

只需将正则表达式中的
[\w]+
替换为
[-\w]+
即可包含破折号


作为旁注,破折号在字符类中有特殊的含义。它要么是类中的第一个,要么是最后一个,要么用反斜杠转义。

\w
包括字母数字字符和下划线。它不包括破折号

只需将正则表达式中的
[\w]+
替换为
[-\w]+
即可包含破折号


作为旁注,破折号在字符类中有特殊的含义。它要么是类中的第一个,要么是最后一个,要么用反斜杠转义。

\w
包括字母数字字符和下划线。它不包括破折号

只需将正则表达式中的
[\w]+
替换为
[-\w]+
即可包含破折号

作为旁注,破折号在字符类中有特殊的含义。它要么是类中的第一个,要么是最后一个,要么用反斜杠转义