問號在正則表達式中有四種常見的用法:
匹配零個或一個字符:在正則表達式中使用問號表示前面的字符或子表達式可選,即出現零次或一次。例如,表達式"a?b"可以匹配"b"、“ab"和"aab”。
非貪婪匹配:在正則表達式中使用問號可以將貪婪匹配變為非貪婪匹配。貪婪匹配表示盡可能多地匹配字符,而非貪婪匹配表示盡可能少地匹配字符。例如,表達式"a.*?b"可以匹配"aab"中的"ab",而表達式"a.*b"會匹配整個字符串"aab"。
零寬斷言:在正則表達式中使用問號可以表示零寬斷言,即匹配某個位置的前面或后面是否滿足某種條件,但并不消耗字符。例如,表達式"a(?=b)“可以匹配"a"后面是"b"的情況,但并不匹配"ab"中的"a”。
分組引用:在正則表達式中使用問號可以引用分組,并在匹配過程中重新使用該分組匹配到的內容。例如,表達式"(ab)?c\1"可以匹配"abcab"中的"abc",其中"\1"表示引用第一個分組匹配到的內容"ab"。
這些是問號在正則表達式中常見的四種用法,其他用法還有待探索。