日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

正則表達式中 “$” 并不是表示 “字符串結(jié)束”

來源: 責編: 時間:2024-04-16 08:33:53 220觀看
導讀本文轉(zhuǎn)載自微信公眾號「 豌豆花下貓」,作者 Python貓 。這篇文章寫一寫我最近在用 Python 的正則表達式模塊(re)開發(fā) CPython 的 SBOM 工具時發(fā)現(xiàn)的一個令人驚訝的行為。如果用過正則表達式,你可能知道 ^ 表示 “字符串開

本文轉(zhuǎn)載自微信公眾號「 豌豆花下貓」,作者 Python貓 gEt28資訊網(wǎng)——每日最新資訊28at.com

這篇文章寫一寫我最近在用 Python 的正則表達式模塊(re)開發(fā) CPython 的 SBOM 工具時發(fā)現(xiàn)的一個令人驚訝的行為。gEt28資訊網(wǎng)——每日最新資訊28at.com

如果用過正則表達式,你可能知道 ^ 表示 “字符串開始”,并相應地將 $ 視為 “字符串結(jié)束”。因此認為, cat$ 模式會匹配字符串 "lolcat" ,但不會匹配 "internet cat video"。gEt28資訊網(wǎng)——每日最新資訊28at.com

^ 的行為讓我認為 $ 也是類似的,但這并不一定成立,而且這種行為取決于不同編程語言及其寫法。gEt28資訊網(wǎng)——每日最新資訊28at.com

特別是對于 Python 來說,如果禁用了多行模式(這是默認設置),那么,$ 字符不僅可以匹配字符串的末尾,還可以匹配字符串末尾的換行符。gEt28資訊網(wǎng)——每日最新資訊28at.com

所以,如果你試圖匹配一個末尾沒有換行符的字符串,在 Python 中使用 $ 是做不到的!我本以為禁用多行模式后,就不會有這種匹配換行符的行為,但事實恰恰相反。gEt28資訊網(wǎng)——每日最新資訊28at.com

下一個合乎邏輯的問題是,如何在 Python 中匹配一個末尾不含換行符的字符串?gEt28資訊網(wǎng)——每日最新資訊28at.com

在對 Python 和其它正則表達式語法進行多番研究后,我還發(fā)現(xiàn)了 /z 和 /Z 可以用于匹配 “字符串結(jié)束” 字符。gEt28資訊網(wǎng)——每日最新資訊28at.com

在 Python 中,可以用 re.MULTILINE 來啟用多行模式,文檔的描述如下:gEt28資訊網(wǎng)——每日最新資訊28at.com

當指定 re.MULTILINE 時,模式字符 '$' 會匹配字符串末尾以及每一行末尾(包含換行符)。默認情況下,'$' 只匹配字符串末尾以及字符串末尾的換行符之前(如果有的話)。gEt28資訊網(wǎng)——每日最新資訊28at.com

讓我們看看這些特性在不同平臺上是什么表現(xiàn):gEt28資訊網(wǎng)——每日最新資訊28at.com

模式匹配 "cat/n"?
gEt28資訊網(wǎng)——每日最新資訊28at.com

"cat$" 多行模式
gEt28資訊網(wǎng)——每日最新資訊28at.com

"cat$" 無多行模式
gEt28資訊網(wǎng)——每日最新資訊28at.com

"cat/z"
gEt28資訊網(wǎng)——每日最新資訊28at.com

"cat/Z"
gEt28資訊網(wǎng)——每日最新資訊28at.com

PHP
gEt28資訊網(wǎng)——每日最新資訊28at.com

?
gEt28資訊網(wǎng)——每日最新資訊28at.com

?
gEt28資訊網(wǎng)——每日最新資訊28at.com

?
gEt28資訊網(wǎng)——每日最新資訊28at.com

?
gEt28資訊網(wǎng)——每日最新資訊28at.com

ECMAScript
gEt28資訊網(wǎng)——每日最新資訊28at.com

?
gEt28資訊網(wǎng)——每日最新資訊28at.com

?
gEt28資訊網(wǎng)——每日最新資訊28at.com

??
gEt28資訊網(wǎng)——每日最新資訊28at.com

??
gEt28資訊網(wǎng)——每日最新資訊28at.com

Python
gEt28資訊網(wǎng)——每日最新資訊28at.com

?
gEt28資訊網(wǎng)——每日最新資訊28at.com

?gEt28資訊網(wǎng)——每日最新資訊28at.com

??
gEt28資訊網(wǎng)——每日最新資訊28at.com

?
gEt28資訊網(wǎng)——每日最新資訊28at.com

Golang
gEt28資訊網(wǎng)——每日最新資訊28at.com

?
gEt28資訊網(wǎng)——每日最新資訊28at.com

?
gEt28資訊網(wǎng)——每日最新資訊28at.com

?
gEt28資訊網(wǎng)——每日最新資訊28at.com

??
gEt28資訊網(wǎng)——每日最新資訊28at.com

Java 8
gEt28資訊網(wǎng)——每日最新資訊28at.com

?
gEt28資訊網(wǎng)——每日最新資訊28at.com

?
gEt28資訊網(wǎng)——每日最新資訊28at.com

?
gEt28資訊網(wǎng)——每日最新資訊28at.com

?
gEt28資訊網(wǎng)——每日最新資訊28at.com

.NET 7.0
gEt28資訊網(wǎng)——每日最新資訊28at.com

?
gEt28資訊網(wǎng)——每日最新資訊28at.com

?
gEt28資訊網(wǎng)——每日最新資訊28at.com

?
gEt28資訊網(wǎng)——每日最新資訊28at.com

?
gEt28資訊網(wǎng)——每日最新資訊28at.com

Rust
gEt28資訊網(wǎng)——每日最新資訊28at.com

?
gEt28資訊網(wǎng)——每日最新資訊28at.com

?
gEt28資訊網(wǎng)——每日最新資訊28at.com

?
gEt28資訊網(wǎng)——每日最新資訊28at.com

??
gEt28資訊網(wǎng)——每日最新資訊28at.com

  • ?: 模式與字符串 "cat/n" 匹配
  • ?: 模式與字符串 "cat/n" 不匹配
  • ??: 模式無效或不支持該用法

綜合上述表格,如果要匹配換行符,那么在所有語言中使用多行模式的 $ ,都能匹配成功;但如果不想匹配換行符,事情就會變得復雜起來。gEt28資訊網(wǎng)——每日最新資訊28at.com

如果不想匹配換行符,在除了 Python 和 ECMAScript 外的其它語言中,你可以使用 /z。而在 Python 中,你需要使用 /Z ,在 ECMAScript 中使用非多行模式的 $。gEt28資訊網(wǎng)——每日最新資訊28at.com

今天這些關(guān)于正則表達式的知識,你學會了么?gEt28資訊網(wǎng)——每日最新資訊28at.com

注意:上述數(shù)據(jù)表的信息收集自 regex101.com,我沒有用實際的編程環(huán)境進行測試。gEt28資訊網(wǎng)——每日最新資訊28at.com

作者:Seth LarsongEt28資訊網(wǎng)——每日最新資訊28at.com

譯者:豌豆花下貓@Python貓gEt28資訊網(wǎng)——每日最新資訊28at.com

英文:Regex character “$” doesn't mean “end-of-string”gEt28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-83786-0.html正則表達式中 “$” 并不是表示 “字符串結(jié)束”

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 通過JS獲取你當前的網(wǎng)絡狀況?建議大家學一學~

下一篇: 設計模式之代理模式:為對象提供一個“替身”

標簽:
  • 熱門焦點
  • 對標蘋果的靈動島 華為帶來實況窗功能

    繼蘋果的靈動島之后,華為也在今天正式推出了“實況窗”功能。據(jù)今天鴻蒙OS 4.0的現(xiàn)場演示顯示,華為的實況窗可以更高效的展現(xiàn)出實時通知,比如鎖屏上就能看到外賣、打車、銀行
  • 容量越大越不壞?24萬塊硬盤故障率報告公布 這些產(chǎn)品零故障

    8月5日消息,云存儲服務商Backblaze發(fā)布了最新的硬盤故障率報告,年故障率有所上升。Backblaze發(fā)布的硬盤季度統(tǒng)計數(shù)據(jù),其中包括故障率等重要方面。這些結(jié)
  • 十個可以手動編寫的 JavaScript 數(shù)組 API

    JavaScript 中有很多API,使用得當,會很方便,省力不少。 你知道它的原理嗎? 今天這篇文章,我們將對它們進行一次小總結(jié)。現(xiàn)在開始吧。1.forEach()forEach()用于遍歷數(shù)組接收一參
  • 之家push系統(tǒng)迭代之路

    前言在這個信息爆炸的互聯(lián)網(wǎng)時代,能夠及時準確獲取信息是當今社會要解決的關(guān)鍵問題之一。隨著之家用戶體量和內(nèi)容規(guī)模的不斷增大,傳統(tǒng)的靠"主動拉"獲取信息的方式已不能滿足用
  • 2023年,我眼中的字節(jié)跳動

    此時此刻(2023年7月),字節(jié)跳動從未上市,也從未公布過任何官方的上市計劃;但是這并不妨礙它成為中國最受關(guān)注的互聯(lián)網(wǎng)公司之一。從2016-17年的抖音強勢崛起,到2018年的“頭騰
  • 本地生活這塊肥肉,拼多多也想吃一口

    出品/壹覽商業(yè) 作者/李彥編輯/木魚拼多多也看上本地生活這塊蛋糕了。近期,拼多多在App首頁“充值中心”入口上線了本機生活界面。壹覽商業(yè)發(fā)現(xiàn),該界面目前主要
  • iQOO 11S屏幕細節(jié)公布:首發(fā)三星2K E6全感屏 安卓最好的直屏手機

    日前iQOO手機官方宣布,新一代電競旗艦iQOO 11S將會在7月4日19:00正式與大家見面。隨著發(fā)布時間的日益臨近,官方關(guān)于該機的預熱也更加密集,截至目前已
  • iQOO Neo8 Pro即將開售:到手價3099元起 安卓性能最強旗艦

    5月23日,iQOO如期舉行了新品發(fā)布會,全新的iQOO Neo8系列也正式與大家見面,包含iQOO Neo8和iQOO Neo8 Pro兩個版本,其中標準版搭載高通驍龍8+,而Pro版更
  • 朋友圈可以修改可見范圍了 蘋果用戶可率先體驗

    近日,iOS用戶迎來微信8.0.27正式版更新,除了可更換二維碼背景外,還新增了多項實用功能。在新版微信中,朋友圈終于可以修改可見范圍,簡單來說就是已發(fā)布的朋友圈
Top 主站蜘蛛池模板: 丹凤县| 桃园县| 江口县| 兖州市| 新干县| 德州市| 毕节市| 通渭县| 靖西县| 定安县| 吴忠市| 西充县| 洛阳市| 怀远县| 车致| 遂宁市| 孝昌县| 灵寿县| 马山县| 绥化市| 景洪市| 循化| 南木林县| 年辖:市辖区| 大兴区| 邹城市| 盐边县| 广宗县| 隆尧县| 成安县| 安西县| 陇西县| 江油市| 中牟县| 绵竹市| 图们市| 深州市| 阳东县| 云和县| 济阳县| 房产|