我正在运行以下正则表达式
Regex.Match(x, "<([^\s]+)")
但是\ s显示错误&#34;未记录的转义序列&#34; 如果我这样做
Regex.Match(x, @"<([^\s]+)")
它仍然无法运作。
我想找到一个以&lt;开头的字符序列。然后任何角色直到找到一个空格或者>找到了。
编辑:
我正在编辑这个,有人发现它,并想知道解决方案。当我还在学习正则表达式时没有人告诉我有关逃避我的角色的事情。所需要的只是一个双重反斜杠来逃避特殊角色。
答案 0 :(得分:1)
您需要提供转义序列 而不是使用 Regex.Match(x,@&#34;&lt;([^ \ s] +)&#34;)[单斜杠] 使用[Double Slash]来避免错误&#34;未记录的转义序列&#34; Regex.Match(x,@&#34;&lt;([^ \\ s] +)&#34;);
可能有帮助。如果您需要更多信息,请继续发布。
答案 1 :(得分:1)
需要提供转义序列@"<([^\s]+)"
string pattern = @"<([^\s]+)";
string input = @"<sada >sffds</sada>";
foreach (Match m in Regex.Matches(input, pattern))
{
Console.WriteLine("'{0}' found at index {1}.", m.Value, m.Index);
}
答案 2 :(得分:0)
确实必须使用@""
字符串(或者通过将它们加倍\\
来逃避反斜杠本身,但这样做并不容易。)
反斜杠在字符串中具有非常特殊的含义(特殊的不可打印字符的转义序列,在任何正则表达式解释之前)。因此,您必须告诉C#编译器不要将退格解释为转义字符。
这个正则表达式可以解决这个问题:<([^\s>]+)
(匹配<
然后捕获所有非空格或>
)
在字符串中:
abcdef <ghij klm nop qrs tu<vwxy>z
ghij
和vwxy
是2个被捕获的群组。