------------------------------------------------------------Golang中的正则表达式------------------------------------------------------------用法:------------------------------单一:.匹配任意一个字符,如果设置s=true,则可以匹配换行符[字符类]匹配“字符类”中的一个字符,“字符类”见后面的说明[^字符类]匹配“字符类”外的一个字符,“字符类”见后面的说明\小写Perl标记匹配“Perl类”中的一个字符,“Perl类”见后面的说明\大写Perl标记匹配“Perl类”外的一个字符,“Perl类”见后面的说明[:ASCII类名:]匹配“ASCII类”中的一个字符,“ASCII类”见后面的说明[:^ASCII类名:]匹配“ASCII类”外的一个字符,“ASCII类”见后面的说明\pUnicode普通类名匹配“Unicode类”中的一个字符(仅普通类),“Unicode类”见后面的说明\PUnicode普通类名匹配“Unicode类”外的一个字符(仅普通类),“Unicode类”见后面的说明\p{Unicode类名}匹配“Unicode类”中的一个字符,“Unicode类”见后面的说明\P{Unicode类名}匹配“Unicode类”外的一个字符,“Unicode类”见后面的说明------------------------------复合:xy匹配xy(x后面跟随y)x|y匹配x或y(优先匹配x)------------------------------重复:x*匹配零个或多个x,优先匹配更多(贪婪)x+匹配一个或多个x,优先匹配更多(贪婪)x?匹配零个或一个x,优先匹配一个(贪婪)x{n,m}匹配n到m个x,优先匹配更多(贪婪)x{n,}匹配n个或多个x,优先匹配更多(贪婪)x{n}只匹配n个xx*?匹配零个或多个x,优先匹配更少(非贪婪)x+?匹配一个或多个x,优先匹配更少(非贪婪)x??匹配零个或一个x,优先匹配零个(非贪婪)x{n,m}?匹配n到m个x,优先匹配更少(非贪婪)x{n,}?匹配n个或多个x,优先匹配更少(非贪婪)x{n}?只匹配n个x------------------------------分组:(子表达式)被捕获的组,该组被编号(子匹配)(?P命名子表达式)被捕获的组,该组被编号且被命名(子匹配)(?:子表达式)非捕获的组(子匹配)(?标记)在组内设置标记,非捕获,标记影响当前组后的正则表达式(?标记:子表达式)在组内设置标记,非捕获,标记影响当前组内的子表达式标记的语法是:xyz(设置xyz标记)-xyz(清除xyz标记)xy-z(设置xy标记,清除z标记)可以设置的标记有:i不区分大小写(默认为false)m多行模式:让^和$匹配整个文本的开头和结尾,而非行首和行尾(默认为false)s让.匹配\n(默认为false)U非贪婪模式:交换x*和x*?等的含义(默认为false)------------------------------位置标记:^如果标记m=true则匹配行首,否则匹配整个文本的开头(m默认为false)$如果标记m=true则匹配行尾,否则匹配整个文本的结尾(m默认为false)\A匹配整个文本的开头,忽略m标记\b匹配单词边界\B匹配非单词边界\z匹配整个文本的结尾,忽略m标记------------------------------转义序列:\a匹配响铃符(相当于\x07)注意:正则表达式中不能使用\b匹配退格符,因为\b被用来匹配单词边界,可以使用\x08表示退格符。\f匹配换页符(相当于\x0C)\t匹配横向制表符(相当于\x09)\n匹配换行符(相当于\x0A)\r匹配回车符(相当于\x0D)\v匹配纵向制表符(相当于\x0B)\123匹配8進制编码所代表的字符(必须是3位数字)\x7F匹配16進制编码所代表的字符(必须是3位数字)\x{10FFFF}匹配16進制编码所代表的字符(最大值10FFFF)\Q\E匹配\Q和\E之间的文本,忽略文本中的正则语法\\匹配字符\\^匹配字符^\$匹配字符$\.匹配字符.\*匹配字符*\+匹配字符+\?匹配字符?\{匹配字符{\}匹配字符}\(匹配字符(\)匹配字符)\[匹配字符[\]匹配字符]\|匹配字符|------------------------------可以将“命名字符类”作为“字符类”的元素:[\d]匹配数字(相当于\d)[^\d]匹配非数字(相当于\D)[\D]匹配非数字(相当于\D)[^\D]匹配数字(相当于\d)[[:name:]]命名的“ASCII类”包含在“字符类”中(相当于[:name:])[^[:name:]]命名的“ASCII类”不包含在“字符类”中(相当于[:^name:])[\p{Name}]命名的“Unicode类”包含在“字符类”中(相当于\p{Name})[^\p{Name}]命名的“Unicode类”不包含在“字符类”中(相当于\P{Name})------------------------------------------------------------说明:------------------------------“字符类”取值如下(“字符类”包含“Perl类”、“ASCII类”、“Unicode类”):x单个字符A-Z字符范围(包含首尾字符)\小写字母Perl类[:ASCII类名:]ASCII类\p{Unicode脚本类名}Unicode类(脚本类)\pUnicode普通类名Unicode类(普通类)------------------------------“Perl类”取值如下:\d数字(相当于[0-9])\D非数字(相当于[^0-9])\s空白(相当于[\t\n\f\r])\S非空白(相当于[^\t\n\f\r])\w单词字符(相当于[0-9A-Za-z_])\W非单词字符(相当于[^0-9A-Za-z_])------------------------------“ASCII类”取值如下[:alnum:]字母数字(相当于[0-9A-Za-z])[:alpha:]字母(相当于[A-Za-z])[:ascii:]ASCII字符集(相当于[\x00-\x7F])[:blank:]空白占位符(相当于[\t])[:cntrl:]控制字符(相当于[\x00-\x1F\x7F])[:digit:]数字(相当于[0-9])[:graph:]图形字符(相当于[!-~])[:lower:]小写字母(相当于[a-z])[:print:]可打印字符(相当于[-~]相当于[[:graph:]])[:punct:]标点符号(相当于[!-/:-@[-反引号{-~])[:space:]空白字符(相当于[\t\n\v\f\r])[:upper:]大写字母(相当于[A-Z])[:word:]单词字符(相当于[0-9A-Za-z_])[:xdigit:]16進制字符集(相当于[0-9A-Fa-f])------------------------------“Unicode类”取值如下---普通类:C-其他-(other)Cc控制字符(control)Cf格式(format)Co私人使用区(privateuse)Cs代理区(surrogate)L-字母-(letter)Ll小写字母(lowercaseletter)Lm修饰字母(modifierletter)Lo其它字母(otherletter)Lt首字母大写字母(titlecaseletter)Lu大写字母(uppercaseletter)M-标记-(mark)Mc间距标记(spacingmark)Me关闭标记(enclosingmark)Mn非间距标记(non-spacingmark)N-数字-(number)Nd十進制数字(decimalnumber)Nl字母数字(letternumber)No其它数字(othernumber)P-标点-(punctuation)Pc连接符标点(connectorpunctuation)Pd破折号标点符号(dashpunctuation)Pe关闭的标点符号(closepunctuation)Pf最后的标点符号(finalpunctuation)Pi最初的标点符号(initialpunctuation)Po其他标点符号(otherpunctuation)Ps开放的标点符号(openpunctuation)S-符号-(symbol)Sc货币符号(currencysymbol)Sk修饰符号(modifiersymbol)Sm数学符号(mathsymbol)So其他符号(othersymbol)Z-分隔符-(separator)Zl行分隔符(lineseparator)Zp段落分隔符(paragraphseparator)Zs空白分隔符(spaceseparator)------------------------------“Unicode类”取值如下---脚本类:Arabic阿拉伯文Armenian亚美尼亚文Balinese巴厘岛文Bengali孟加拉文Bopomofo汉语拼音字母Braille盲文Buginese布吉文Buhid布希德文Canadian_Aboriginal加拿大土著文Carian卡里亚文Cham占族文Cherokee切诺基文Common普通的,字符不是特定于一个脚本Coptic科普特文Cuneiform楔形文字Cypriot塞浦路斯文Cyrillic斯拉夫文Deseret犹他州文Devanagari梵文Ethiopic衣索比亚文Georgian格鲁吉亚文Glagolitic格拉哥里文Gothic哥特文Greek希腊Gujarati古吉拉特文Gurmukhi果鲁穆奇文Han汉文Hangul韩文Hanunoo哈鲁喏文Hebrew希伯来文Hiragana平假名(日语)Inherited继承前一个字符的脚本Kannada坎那达文Katakana片假名(日语)Kayah_Li克耶字母Kharoshthi卡罗须提文Khmer高棉文Lao老挝文Latin拉丁文Lepcha雷布查文Limbu林布文Linear_BB类线形文字(古希腊)Lycian利西亚文Lydian吕底亚文Malayalam马拉雅拉姆文Mongolian蒙古文Myanmar缅甸文New_Tai_Lue新傣仂文NkoNko文Ogham欧甘文Ol_Chiki桑塔利文Old_Italic古意大利文Old_Persian古波斯文Oriya奥里亚文Osmanya奥斯曼亚文Phags_Pa八思巴文Phoenician腓尼基文Rejang拉让文Runic古代北欧文字Saurashtra索拉什特拉文(印度县城)Shavian萧伯纳文Sinhala僧伽罗文Sundanese巽他文Syloti_Nagri锡尔赫特文Syriac叙利亚文Tagalog塔加拉文Tagbanwa塔格巴努亚文Tai_Le德宏傣文Tamil泰米尔文Telugu泰卢固文Thaana塔安那文Thai泰文Tibetan藏文Tifinagh提非纳文Ugaritic乌加里特文Vai瓦伊文Yi彝文------------------------------------------------------------注意:对于[a-z]这样的正则表达式,如果要在[]中匹配-,可以将-放在[]的开头或结尾,例如[-a-z]或[a-z-]可以在[]中使用转义字符:\f、\t、\n、\r、\v、\377、\xFF、\x{10FFFF}、\\、\^、\$、\.、\*、\+、\?、\{、\}、\(、\)、\[、\]、\|(具体含义见上面的说明)如果在正则表达式中使用了分组,则在执行正则替换的时候,“替换内容”中可以使用$1、${1}、$name、${name}这样的“分组引用符”获取相应的分组内容。其中$0代表整个匹配项,$1代表第1个分组,$2代表第2个分组,……。如果“分组引用符”是$name的形式,则在解析的时候,name是取尽可能长的字符串,比如:$1x相当于${1x},而不是${1}x,再比如:$10相当于${10},而不是${1}0。由于$字符会被转义,所以要在“替换内容”中使用$字符,可以用\$代替。上面介绍的正则表达式语法是“Perl语法”,除了“Perl语法”外,Go语言中还有另一种“POSIX语法”,“POSIX语法”除了不能使用“Perl类”之外,其它都一样。------------------------------------------------------------//示例funcmain(){text:=`Hello世界!123Go.`//查找连续的小写字母reg:=(`[a-z]+`)("%q\n",(text,-1))//["ello""o"]//查找连续的非小写字母reg=(`[^a-z]+`)("%q\n",(text,-1))//["H""世界!123G""."]//查找连续的单词字母reg=(`[\w]+`)("%q\n",(text,-1))//["Hello""123""Go"]//查找连续的非单词字母、非空白字符reg=(`[^\w\s]+`)("%q\n",(text,-1))//["世界!""."]//查找连续的大写字母reg=(`[[:upper:]]+`)("%q\n",(text,-1))//["H""G"]//查找连续的非ASCII字符reg=(`[[:^ascii:]]+`)("%q\n",(text,-1))//["世界!"]//查找连续的标点符号reg=(`[\pP]+`)("%q\n",(text,-1))//["!""."]//查找连续的非标点符号字符reg=(`[\PP]+`)("%q\n",(text,-1))//["Hello世界""123Go"]//查找连续的汉字reg=(`[\p{Han}]+`)("%q\n",(text,-1))//["世界"]//查找连续的非汉字字符reg=(`[\P{Han}]+`)("%q\n",(text,-1))//["Hello""!123Go."]//查找Hello或Goreg=(`Hello|Go`)("%q\n",(text,-1))//["Hello""Go"]//查找行首以H开头,以空格结尾的字符串reg=(`^H.*\s`)("%q\n",(text,-1))//["Hello世界!123"]//查找行首以H开头,以空白结尾的字符串(非贪婪模式)reg=(`(?U)^H.*\s`)("%q\n",(text,-1))//["Hello"]//查找以hello开头(忽略大小写),以Go结尾的字符串reg=(`(?i:^hello).*Go`)("%q\n",(text,-1))//["Hello世界!123Go"]//查找=(`\QGo.\E`)("%q\n",(text,-1))//["Go."]//查找从行首开始,以空格结尾的字符串(非贪婪模式)reg=(`(?U)^.*`)("%q\n",(text,-1))//["Hello"]//查找以空格开头,到行尾结束,中间不包含空格字符串reg=(`[^]*基础知识-Golang中的正则表达式-今日头条)("%q\n",(text,-1))//["Go."]//查找“单词边界”之间的字符串reg=(`(?U)\b.+\b`)("%q\n",(text,-1))//["Hello""世界!""123""""Go"]//查找连续1次到4次的非空格字符,并以o结尾的字符串reg=(`[^]{1,4}o`)("%q\n",(text,-1))//["Hello""Go"]//查找Hello或Goreg=(`(?:Hell|G)o`)("%q\n",(text,-1))//["Hello""Go"]//查找Hello或Go,替换为Hellooo、Goooreg=(`(?PHell|G)o`)("%q\n",(text,"${n}ooo"))//"Hellooo世界!123Gooo."//交换Hello和Goreg=(`(Hello)(.*)(Go)`)("%q\n",(text,"$3$2$1"))//"Go世界!123Hello."//特殊字符的查找reg=(`[\f\t\n\r\v\123\x7F\x{10FFFF}\\\^\$\.\*\+\?\{\}\(\)\[\]\|]`)("%q\n",("\f\t\n\r\v\123\x7F\U0010FFFF\\^$.*+?{}()[]|","-"))//"----------------------"}------------------------------------------------------------
推荐阅读
推荐资讯
-
![2016 BC VOGA”闪耀之星”形象代言人 全国10强完美绽放]()
2016 BC VOGA”闪耀之星”形象代言人 全国10强完美绽放
-
![「传说」公鸡的叫声为什么是喔喔喔?]()
「传说」公鸡的叫声为什么是喔喔喔?
- 2026-02-09 | 中国社科院俄罗斯东欧中亚所研究员程亦军:“带盟对接”将推动中俄地区合作深入发展
- 2026-02-09 | 三福、森马等服装抽检不合格
- 2026-02-09 | 一家店竟有两个身份,本报揭开“影子店铺”之谜
- 2026-02-09 | ICICLE女装是国产品牌,但它价格可不便宜,还是高端环保型
- 2026-02-09 | 吃在银川:银川有个有个“鸡汇”,您未必能遇上
- 2026-02-09 | 大湾区开直播电商青年训练班
最新资讯
-
![什么!吃麦当劳还能减肥?让麦克带你解锁麦当劳最新吃法]()
什么!吃麦当劳还能减肥?让麦克带你解锁麦当劳最新吃法
-
![开一家水饺店投资大吗?都需要准备什么?]()
开一家水饺店投资大吗?都需要准备什么?
- 2026-02-09 | 100个常用英语口语句子,背完口语棒棒哒!
- 2026-02-09 | 长春辣小鸭加盟——鸭脖加盟
- 2026-02-09 | 近五年高考英语语法填空谓语动词总结
- 2026-02-09 | 亚冠 秦式无影脚再次上演 断腿式飞萨抢球输球输人
- 2026-02-09 | 马博士进村了,“牛”问题解决啦
- 2026-02-09 | 曝光!南安中山街、民主街15家商铺夜间乱扔垃圾!城管上街对其劝导……
热门资讯
-
![英语考题(1)]()
英语考题(1)
-
![湖南国资国企复工进行时|吹响复工号角 转动复产齿轮]()
湖南国资国企复工进行时|吹响复工号角 转动复产齿轮
- 2026-02-08 | 美国海上风电发展现状
- 2026-02-08 | 各种配方大解密第九篇(四川麻辣烫,串串的制作工艺)
- 2026-02-08 | 让孩子成为最好的自己 ——少年儿童出版社与马拉丁童装战略合作签约仪式举行
- 2026-02-08 | 人人都能做代理!POS机代理普及第一帖
- 2026-02-08 | 麻辣串串香配方
- 2026-02-08 | 高三的注意了英语单词重点考点是动词用法中学阶段所有动词汇总
感谢你浏览了全部内容~









