我在看别人的正则表达式......我可以弄清楚我正在处理积极的lookbehind,但我不确定它应该匹配什么:(?<=[^])\t{2,}|(?<=[>])
。C#regex中的[^]匹配是什么?
我知道当中小号,吨,ü和˚F[stuff]
匹配任何字符。我知道[^stuff]
匹配任何字符不是其中。
但[^]
是什么意思?我想这可能意味着“任何不是长度为零的东西”,即“任何东西”。但是为什么不只是在简单的.
表达式上使用一些扩展(以捕获换行符)呢?
更新:
每Wikter的评论,[^]
单独无效。但是,这仍然让我想知道这件事情是应该做的......
对我来说,直观的阅读是...
(?<=[^])
- 向后看,无论什么[^]
比赛
\t{2,}
- 然后找到两个或两个以上选项卡
|
- 如果不是对于比赛......
(?<=[>])
- ...看看后面的>
字符。
我的翻译在哪里缺少标记?
与ECMAScript以外的大部分正则表达式类似,这是一种无效模式。它会抛出*'Unterminated [] set' *异常。要匹配任何字符,可以使用'(?s:。)'(''.'模式和'RegexOptions.Singleline'选项)。 –
@WiktorStribiżew谢谢,你是对的,我给的表达不会编译。我从源regex添加了更多的上下文:'(?<= [^])\ t {2,} |(?<=[>])''。 – mac9416
是的,所以“C#regex中的[^]匹配是什么?”它不匹配任何东西,因为它是无效的模式。它甚至没有尝试,它在解析阶段失败。而'[^>]'是一个否定的字符类,匹配任何字符,但匹配'>'。 –