有人可以解釋什麼(?i)
和(?-i)
包裝在正則表達式的意思是?正則表達式中的`?i`和`?-i`是什麼意思?
(?i)test(?-i)
我測試和它匹配test
,TEST
和teSt
。但我從來沒有見過這個。 i
之前的?
是什麼意思?我看到這個here。
有人可以解釋什麼(?i)
和(?-i)
包裝在正則表達式的意思是?正則表達式中的`?i`和`?-i`是什麼意思?
(?i)test(?-i)
我測試和它匹配test
,TEST
和teSt
。但我從來沒有見過這個。 i
之前的?
是什麼意思?我看到這個here。
(?i)
開始不區分大小寫的模式
(?-i)
關閉在"Turning Modes On and Off for Only Part of The Regular Expression" section of this page不區分大小寫的模式
的更多信息:
現代正則表達式的味道讓你修飾符適用於只有部分 正則表達式。如果在 正則表達式的中間插入修飾符(?ism),修飾符僅適用於修飾符右側 正則表達式的部分。您可以通過在前面添加 減號來關閉模式。減號後的所有模式都將被關閉。例如。 (?i-sm)打開不區分大小寫,並關閉單線模式和多線模式。
並非所有的正則表達式都支持這一點。 JavaScript和Python將所有 模式修飾符應用於整個正則表達式。他們不支持 (?-ismx)語法,因爲在 模式修飾符適用於整個正則表達式時關閉選項毫無意義。所有選項默認爲關閉 。
您可以快速測試您正在使用的正則表達式處理模式 修飾符。正則表達式(?i)te(? - i)st應該與test和TEst相匹配,但不能與teST或TEST相匹配。
(?i)
打開不區分大小寫模式,(?-i)
將其關閉。
例如,如果你試圖(?i)te(?-i)st
,它將匹配測試,測試,測試,但不測試。
直接從ruby docs。
正則表達式的最後分隔符後可跟一個或多個單字母選項,用於控制模式如何匹配。
/PAT/I - 忽略大小寫
/PAT /米 - 治療的換行符爲通過匹配的字符。
/PAT/X - 忽略空白和註釋在圖案
/PAT/O - >執行#{}內插僅一次
I,M,和X也可以在 所施加的(?on-off)結構的子表達式級別,該表達式啓用 選項,並禁用 括號括起的表達式的選項。
感謝您的回答! – Luccas 2013-02-28 21:25:53
感謝您的回答! – Luccas 2013-02-28 21:24:51