練習題131:在漢字后添加括號【正則表達式】 練習題131: 在B3單元格字符串的漢字后添加括號 效果如下圖所示 ![]() 要求: ○ 使用正則表達式函數 ○ 正則表達式函數只用一次 ○ 盡可能多地寫出明顯不同的正則表達式 參考公式一 首先想到的就是使用捕獲分組,匹配漢字,然后在替換參數里引用它。 公式: =REGEXREPLACE(B3,"([一-龜])","$1( )") 解釋: 除了用[一-龜]表示漢字,還可用\p{han}、[\x{4E00}-\x{9FA5}]、[一-?]等。 詳見歷史文章 需要注意的是,\p{han}有局限性,它會包含【】《》、。等中文標點符號 ![]() 除了用[一-龜]匹配漢字,還可用Unicode 屬性轉義序列來大致地匹配B3單元格中的漢字。 公式: =REGEXREPLACE(B3,"\p{Lo}","$0( )") 解釋: \p{L}含漢字、各種語言中的字母。 \p{L}可進一步細分六類,詳見下圖: ![]() 公式二 除了使用捕獲分組來引用匹配到的漢字,還可用 $0、$&來引用匹配的結果。 公式: =REGEXREPLACE(B3,"[一-龜]","$0( )") ![]() 相應知識點的介紹,詳見昨天的文章: 公式三:在指定位置插入 除了使用字符替換,還可在指定位置插入符號 最常見的公式: =REGEXREPLACE(B3,"(?<=[一-龜])","( )") ![]() 公式解釋: 群友大爺很忙?_?還提供了另一種寫法: =REGEXREPLACE(B3,"(*plb:[一-龜])","( )") 這種寫法的知識點,龍逸凡已整理為下面的表格 ![]() 我們還可使用\K來變通地實現定位 公式: =REGEXREPLACE(B3,"[一-龜]\K","( )") ![]() 公式四 正則表達式大牛娋甜(她在B站的賬號魚腹Office)還提供了很多公式 其中一個公式 =REGEXREPLACE(B3,"([\w--0-z])\K","( )") ![]() 公式中的 [\w--0-z] 寫成 [\w--[0-z]] 更好理解一點。 它共分為三部分: \w 在Excel中\w與WPS不一樣,它使用的是unicode模式,除了包含數字字母下劃線,還包含漢字。 0-z 主要是包含數字、大小寫字母,具體字符如下: 0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz -- 這是集合運算,表示求差集,類似于減法, 整體含義: 將字符集\w字母剔除[0-z]之間的字符。 |
|