我在看別人的正則表達式......我可以弄清楚我正在處理積極的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中的[^]匹配是什麼?」它不匹配任何東西,因爲它是無效的模式。它甚至沒有嘗試,它在解析階段失敗。而'[^>]'是一個否定的字符類,匹配任何字符,但匹配'>'。 –