簡體   English   中英

這是怎么回事?運營商在正則表達式中工作?

[英]How does this ? operator work in regex?

^.*(?=.*[0-9]).*$

我看到這張貼在某人的代碼中。 這是一個有效的正則表達式嗎? 我知道? 應該像abc?一樣使它之前的項目可選abc? 使c可選。 但是? 是一個捕獲支架的開始。 那是什么意思?

? 單獨表示:選擇匹配之前的內容。

但是, (? .. )用於斷言......

在你的情況下, (?=是一個前瞻斷言,意思是:如果只是匹配(括號中的內容),則跟隨。

參考


(?:......)

非捕獲括號。 對包含的模式進行分組,但不提供匹配文本的捕獲。 比捕獲括號更有效。

(?> ...)

原子匹配括號。 括號內的子表達式的第一個匹配是唯一嘗試過的; 如果它沒有導致整體模式匹配,則將搜索匹配到“(?>”之前的位置

(?#...)

自由格式評論(?#comment)。

(?= ...)

前瞻性斷言。 如果帶括號的模式在當前輸入位置匹配,但不提前輸入位置,則為真。

(?!...)

否定的前瞻性斷言。 如果括號模式在當前輸入位置不匹配,則為True。 不提前輸入位置。

(?<= ...)

后瞻性斷言。 如果帶括號的模式與當前輸入位置之前的文本匹配,則為真,其中匹配的最后一個字符是當前位置之前的輸入字符。 不改變輸入位置。 由后視圖案匹配的可能字符串的長度不得無限制(無*或+運算符。)

(?<!......)

負面的后瞻性斷言。 如果帶括號的模式與當前輸入位置之前的文本不匹配,則為真,其中匹配的最后一個字符是當前位置之前的輸入字符。 不改變輸入位置。 由后視圖案匹配的可能字符串的長度不得無限制(無*或+運算符。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM