[英]C# Regex Can't Match Anything (Probably because can't escape characters properly)
[英]Can a regex '(?!^()$)' match anything?
在一個非常特殊的情況下,我的否定前瞻是一個空列表:
(?!^()$)
是否有任何匹配的字符串?
比方說:
(?!^()$)^(.*)$
它會匹配所有東西嗎?
從字面上看,空字符串旁邊的任何東西。
正則表達式包含(?!^()$)
和^(.*)$
:
(?!^()$)
空字符串的零寬度負匹配。 按照順序, string.Empty
不在列。
^(.*)$
完全匹配除換行1重復0到很多次以外的所有內容,因此基本上是任何內容。
注意:1.例外換行符
(?!^()$)
可以簡化為(?!^$)
因為()
是一個空組,並且將始終在任何位置匹配。
因此,現在您說的是“在開始和結束錨點彼此不相鄰的任何位置進行匹配,換句話說,我們不是在空字符串上”。
因此(?!^$)
可以在不僅為空或換行的字符串中的每個位置都匹配 。
(?!^()$)^(.*)$
是“到處都匹配,但在空字符串處”加上^.*$
將“匹配並消耗每行,無論是否為空”(錨點^
和$
沒有在這種情況下效果)。 因此,這實際上是在說“在一個字符串中至少消耗一個或多個字符”,可以將其簡化為.+
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.