我试图在c#中使用Regex,但以下代码抛出异常:
string pattern = "(\d+)([+*/-])(\d+)";
Regex reg = new Regex (pattern);
Run Code Online (Sandbox Code Playgroud)
经过一番挖掘后,我发现在c#中如果你试图将' - '与[]表达式匹配,它必须作为该括号中的第一个字符,这让我很困惑.
有人可以跳出来向我解释一下吗?
感谢您的任何回复.
该-字符发生在一个特殊意义的字符类中[...]表示一个范围,从而使速记这样的表达式了以下工作:
"[a-z]" // matches all lowercase alphabetic characters without having to specify them all.
Run Code Online (Sandbox Code Playgroud)
将-仅解释字面上如果它是第一个字符,只是因为它不能表示的范围内,因为没有其他值之前它.
老实说,它是第一个还是最后一个角色应该没有区别.
该代码不会抛出运行时异常 - 代码无法编译,错误"无法识别的转义序列" - 您没有正确地转义反斜杠.\d不是有效的转义字符.
这应该工作:
string pattern = "(\\d+)([+*/-])(\\d+)";
Run Code Online (Sandbox Code Playgroud)
或者,使用逐字字符串文字:
string pattern = @"(\d+)([+*/-])(\d+)";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
126 次 |
| 最近记录: |