正規表示式匹配

2021-08-21 00:17:04 字數 2264 閱讀 3600

題目描述

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

樣例輸入
「a」,」ab*a」

樣例輸出
false

思路
1當字串和模式串同時變為空的時候,匹配成功。返回true

* 2當字串不為空,模式串為空的時候,匹配不成功。返回false

* 3當字串為空,模式串不為空的時候,可能匹配成功。因為*代表0次或多次。

* * 當模式串下乙個字元不為*的時候

* 1直接比較字串和模式串的第乙個字元,如果相等,字串和模式串同時後移一位。

* 2接著比較,相等。重複1.不相等直接返回false

* * 當模式串下乙個字元為*的時候 且匹配成功

* 1字串不移位,模式串後移兩位(*表示出現0次的時候)

* 2字串移動一位,模式串後移兩位(*表示出現1次的時候)

* 3字串後移一位,模式串不動(*表示出現超過2次的時候)

* 當模式串下乙個字元為*的時候 且匹配不成功 字串後移一位,模式串後移兩位,x*,跳過*

*

package regex;

/** * 請實現乙個函式用來匹配包括'.'和''的正規表示式。 模式中的字元'.'表示任意乙個字元,而''表示它前面的字元可以出現任意次(包含0次)。

* 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串"aaa"與模式"a.a"和"abaca"匹配, 但是與"aa.a"和"ab*a"均不匹配

* *@author administrator

* 思路:

* 1當字串和模式串同時變為空的時候,匹配成功。返回true

* 2當字串不為空,模式串為空的時候,匹配不成功。返回false

* 3當字串為空,模式串不為空的時候,可能匹配成功。因為*代表0次或多次。

* * 當模式串下乙個字元不為*的時候

* 1直接比較字串和模式串的第乙個字元,如果相等,字串和模式串同時後移一位。

* 2接著比較,相等。重複1.不相等直接返回false

* * 當模式串下乙個字元為*的時候 且匹配成功

* 1字串不移位,模式串後移兩位(*表示出現0次的時候)

* 2字串移動一位,模式串後移兩位(*表示出現1次的時候)

* 3字串後移一位,模式串不動(*表示出現超過2次的時候)

* *

* 當模式串下乙個字元為*的時候 且匹配不成功 字串後移一位,模式串後移兩位,x*,跳過*

* */

public

class

match ;

char pattern=;

solution s=new solution();

system.out.println(s.match(str,pattern));

}}class solution

return matchto(str,0, pattern,0);

}public

boolean

matchto(char str,int strindex ,char pattern,int patternindex)

if(strindex!=str.length&&patternindex==pattern.length)

//模式串的下乙個字元為*

if((patternindex+1

1]=='*'))else

return matchto(str,strindex, pattern,patternindex+2);

} //模式串下乙個字元不為*

if((strindex!=str.length)&&str[strindex]==pattern[patternindex]||(pattern[patternindex]=='.'&&(strindex!=str.length)))

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...