python 識別子串的位置 Python(十二)

2021-10-14 12:52:13 字數 2562 閱讀 1575

1、什麼是正規表示式?

1)、正規表示式,又稱正規表示式、正規表示法、正規表示式、規則表示式、常規表示法(英語:regular expression,在**中常簡寫為regex、regexp或re),電腦科學的乙個概念。

2)、正規表示式使用單個字串來描述、匹配一系列匹配某個句法規則的字串

3)、在很多文字編輯器裡,正規表示式通常被用來檢索、替換那些匹配某個模式的文字。

4)、正規表示式由元字元及其不同組合來構成,通過巧妙地構造正規表示式可以匹配任意字串,並完成查詢、替換、分隔等複雜的字串處理任務。

貪婪 vs 不貪婪

當重複乙個正規表示式時,如用 a*,操作結果是盡可能多地匹配模式。 .* 的本質是「貪婪」的

在這種情況下,解決方案是使用不貪婪的限定符 *?、+?、?? 或 ?,盡可能匹配小的文字。

python通過re模組提供對正規表示式的支援。使用re的一般步驟是先將正規表示式的字串形式編譯為pattern例項,然後使用pattern例項處理文字並獲得匹配結果(乙個match例項),最後使用match例項獲得資訊,進行其他的操作

1、re.match函式

re.match 嘗試從字串的起始位置匹配乙個模式,如果不是起始位置匹配成功的話,match()就返回none。

匹配成功re.match方法返回乙個匹配的物件,使用group(num) 或 groups() 匹配物件函式來獲取匹配表示式。

2、re.search函式

re.search 掃瞄整個字串並返回第乙個成功的匹配

3、re.match與re.search的區別

re.match只匹配字串的開始,如果字串開始不符合正規表示式,則匹配失敗,函式返回none,而re.search匹配整個字串,直到找到乙個匹配。

4、compile 函式

compile 函式用於編譯正規表示式,生成乙個正規表示式( pattern )物件,供 match() 和 search() 這兩個函式使用。

re.compile(pattern[, flags])
5、findall函式

在字串中找到正規表示式所匹配的所有子串,並返回乙個列表,如果沒有找到匹配的,則返回空列表。

注意: match 和 search 是匹配一次 findall 匹配所有。

findall(string[, pos[, endpos]])
string 待匹配的字串。

pos 可選引數,指定字串的起始位置,預設為 0。

endpos 可選引數,指定字串的結束位置,預設為字串的長度

6、re.finditer函式

在字串中找到正規表示式所匹配的所有子串,並把它們作為乙個迭代器返回

re.finditer(pattern, string, flags=0)
7、re.split

split 方法按照能夠匹配的子串將字串分割後返回列表,它的使用形式如下:

替換函式,將正規表示式 pattern 匹配到的字串替換為 repl 指定的字串, 引數 count 用於指定最大替換次數

sub(pattern, repl, string, count=0, flags=0)

尋找子串位置

給出字串a和字串b,保證b是a的乙個子串,請你輸出b在a中第一次出現的位置。輸入描述 input description 僅一行包含兩個字串a和b 輸出描述 output description 僅一行乙個整數 樣例輸入 sample input abcd bc 樣例輸出 sample output...

C string查詢子串位置

find first of 查詢的是子串中任意字元首次出現的位置。而find 是查詢子串整體出現的位置。string str1 ahedhello111 string str2 hello string str3 helle cout find first of str2 str1.find fir...

1762 識別子串 string

題意 記憶體限制 128 mib 時間限制 1000 ms 00 題解 考慮建出parent樹,只有葉子結點上所接受的串在原串 現一次,而其最長接受的串為原串的一段字首 所以對於其葉子結點 i ii 上在原串中對應著 1,leni 1,len i 1,len i le ni l enfa i,le ...