我正在開發自己的JavaScript庫以支持正則表達式的新元字符和功能,並且我想找到[^xy]
不等於(?!x).
(或更具體地說(?:(?!x|y).)
)的情況。是否存在「[^ xy]」不等於「(?!x | y)」的情況?
就拿示例文本:"abc\n"
說我要模仿一個Perl的正則表達式:/\A.{3}\Z/s
隨着單行標誌,JavaScript的正則表達式應該等於:/^[\s\S]{3}\n*$(?!\s)/
(\A
變得^
,.
成爲[\s\S]
,\Z
變成\n*$(?!\s)
)
現在,/^.{3}$/
會失敗,但/^[\s\S]{3}\n*$(?!\s)/
會c apture「abcabc」(與Perl正則表達式相同)
由於\Z
不僅包含元字符,而且模擬[^\Z]
似乎更難。
就拿示例文本:"abcabc\n"
所提出的JavaScript正則表達式Perl的正則表達式/.{3}[^\Za]/g
將.{3}(?:(?!\n*$(?!\s)|a).)/g
雙方將匹配"bcab"
所以,最後,我再次提出這個問題。有沒有這種情況下,[^xy]
不等於(?:(?!x|y).)
這種情況下,也許在一個更復雜的正則表達式中,一個預見會改變場景?
'/^[\ s \ S] {3} \ n * $(?!\ s)/。exec(「abcabc \ n」)'不符合我的要求,並且不會爲您提供'abcabc'建議 – Eric
也不是perl正則表達式'/ \ A。 {3} \ Z/s'匹配'「abcabc \ n」',正如您聲稱的那樣... – Eric
正確。我改變了一些東西,忘了編輯它們。第一個場景使用文本「abc \ n」,第二個場景使用文本「abcabc \ n」。我已經對主帖進行了編輯。 –