2015-05-11 190 views
1

在Python程序中嘗試使用一些Javascript正則表達式模式時,我遇到了一個奇怪的[^]模式(部分較長的模式,如"<[^]+(?:id=\"block[_-]commerce[_-]cart[_-]cart|class=\"commerce[_-]product[_-]field)")。「[^]」正則表達式模式的含義是什麼(javascript正則表達式)?

這種模式是什麼意思?爲什麼要否定一個空字符類?

+0

否定或補充字符集。也就是說,它匹配括號內未包含的任何內容。您可以使用連字符指定一系列字符。正常字符集中的所有東西也適用於此。 例如,[^ abc]與[^ a-c]相同。他們最初匹配「牛腩」中的「r」和「斬」中的「h」。檢查此.. https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions –

+1

JS中的[[^]'將匹配包括換行符在內的任何字符。 – anubhava

回答

1

在JavaScript中,[^]表示any character

但是,建議您應該使用[\s\S]來代替。

看一看regex101.com demo

Python,它會拋出異常([^ Incomplete character class),你最好使用.re.DOTALL(或re.S)標誌,或[\s\S]字符類。

+0

'但是,它已被棄用'誰說這是棄用?這是在規格。 – nhahtdh

+0

@nhahtdh:對不起,我想我是從regex101的以下消息中得出的:'注意:避免使用這個構造。或者[\ s \ S]。「我更新了文字。 –

+1

我認爲建議使用'[\ s \ S]'來提高可讀性和可移植性,這是一個值得關注的問題,因爲'[^]'和'[]'是僅限JavaScript的結構,並且混淆了任何不玩正則表達式。 – nhahtdh

相關問題