问号在正则表达式中有四种常见的用法:
匹配零个或一个字符:在正则表达式中使用问号表示前面的字符或子表达式可选,即出现零次或一次。例如,表达式"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"。
这些是问号在正则表达式中常见的四种用法,其他用法还有待探索。