[英]How does this ? operator work in regex?
^.*(?=.*[0-9]).*$
我看到這張貼在某人的代碼中。 這是一個有效的正則表達式嗎? 我知道?
應該像abc?
一樣使它之前的項目可選abc?
使c
可選。 但是?
是一個捕獲支架的開始。 那是什么意思?
?
單獨表示:選擇匹配之前的內容。
但是, (? .. )
用於斷言......
在你的情況下, (?=
是一個前瞻斷言,意思是:如果只是匹配(括號中的內容),則跟隨。
參考
(?:......)
非捕獲括號。 對包含的模式進行分組,但不提供匹配文本的捕獲。 比捕獲括號更有效。
(?> ...)
原子匹配括號。 括號內的子表達式的第一個匹配是唯一嘗試過的; 如果它沒有導致整體模式匹配,則將搜索匹配到“(?>”之前的位置
(?#...)
自由格式評論(?#comment)。
(?= ...)
前瞻性斷言。 如果帶括號的模式在當前輸入位置匹配,但不提前輸入位置,則為真。
(?!...)
否定的前瞻性斷言。 如果括號模式在當前輸入位置不匹配,則為True。 不提前輸入位置。
(?<= ...)
后瞻性斷言。 如果帶括號的模式與當前輸入位置之前的文本匹配,則為真,其中匹配的最后一個字符是當前位置之前的輸入字符。 不改變輸入位置。 由后視圖案匹配的可能字符串的長度不得無限制(無*或+運算符。)
(?<!......)
負面的后瞻性斷言。 如果帶括號的模式與當前輸入位置之前的文本不匹配,則為真,其中匹配的最后一個字符是當前位置之前的輸入字符。 不改變輸入位置。 由后視圖案匹配的可能字符串的長度不得無限制(無*或+運算符。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.