日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

对一句正则表达式的理解

發布時間:2024/7/19 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 对一句正则表达式的理解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在《Python基礎教程》的第198頁上看到這樣一句:

re.sub(emphasis_pattern, r'<em>\1</em>', 'Hello, *world*!')

其中:emphasis_pattern = r'\*([^\*]+)\*'

結果為:'Hello, <em>world</em>!'

?

對emphasis_pattern = r'\*([^\*]+)\*'

頭尾的\*取消了元字符*,即只是作為普通字符

中間的()是一個子模式,字符串中與其匹配的子字符串可以用/1進行模式逆引用

[ ]+表示[ ]中的字符至少匹配一個

^\*表示匹配除了*號外的任何符號

與其匹配的例子:*abc* ? (其中abc可以換成除*的任何字符)

?

對re.sub(emphasis_pattern, r'<em>\1</em>', 'Hello, *world*!')

調用函數sub(pat, repl. string)

首先要明白string是匹配pat的,函數的作用是將 匹配的部分用字符串repl替換掉:

如re.sub(r'a[abc]+d' , 'python' , 'hello,abcd')就是:'hello,python'

所以上面那個奇怪的東東其實就是用<em>\1</em>這個字符串來替換掉'Hello, *world*!'滿足emphasis_pattern的部分而已(其實就是*world*)

那么\1是什么東西?

查了些資料,發現這個是re里面的子模式的逆向應用

\1代表的是'Hello, *world*!'匹配emphasis_pattern中( )里面的部分,也就是world

OK!現在就變成了:

re.sub(?r'\*([^\*]+)\*', '<em>world</em>', 'Hello, *world*!')

用<em>world</em>替換掉?*world*,搞定

關于子模式和逆向引用:http://www.cnblogs.com/ylan2009/articles/2382870.html

通過理解這個正則語句,學到了不少

轉載于:https://www.cnblogs.com/ylan2009/archive/2012/03/07/2382880.html

總結

以上是生活随笔為你收集整理的对一句正则表达式的理解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。