正規表示式匹配

2021-10-10 11:37:28 字數 652 閱讀 6289

思路

分為兩種情況,第一種是接下來要匹配的第二個字元是'*',第二種是其他所有情況。

當第二個字元是' * '時,當成功匹配時有三種決策。分別是匹配零次、匹配一次、匹配多次。否則是按匹配零次處理。

其他情況,當匹配成功時(字元相等或模式串是' . ')繼續匹配下乙個,否則匹配失敗。

限制條件有:

任意兩個串為空時返回false

兩串都匹配到最大長度時匹配成功

模式串先匹配完則匹配失敗,目標串先匹配完不確定是否匹配成功(因為存在' * '的影響)

注意陣列越界的處理,不能簡單的在開頭就判斷是否越界,因為存在不是空串但串長度為0的字串

//參考**

public class solution

public boolean matches(char str, int i, char pattern, int j)else

}//緊接的字元不含'*'修飾的其他匹配串

if(i < str.length && (str[i] == pattern[j] || pattern[j] == '.'))

return matches(str, i+1, pattern, j+1);

return false;

}}

正規表示式 匹配

字串 void abtr quint32 ab 表示乙個正規表示式 template class bidirectionaliterator class allocator std allocator sub match bidirectionaliterator class match resul...

正規表示式匹配

請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 包含0次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 和 ab ac a 匹配,但是與 aa.a 和 ab a 均不匹配 解法 首先要想到用遞迴處理...

正規表示式匹配

請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 包含0次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 和 ab ac a 匹配,但是與 aa.a 和 ab a 均不匹配 class solutio...