国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

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

這篇具有很好參考價(jià)值的文章主要介紹了正則表達(dá)式中 “$” 并不是表示 “字符串結(jié)束。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

作者:Seth Larson

譯者:豌豆花下貓@Python貓

英文:Regex character “$” doesn't mean “end-of-string”

轉(zhuǎn)載請(qǐng)保留作者及譯者信息!

這篇文章寫一寫我最近在用 Python 的正則表達(dá)式模塊(re)開(kāi)發(fā) CPython 的 SBOM 工具時(shí)發(fā)現(xiàn)的一個(gè)令人驚訝的行為。

如果用過(guò)正則表達(dá)式,你可能知道 ^ 表示 “字符串開(kāi)始”,并相應(yīng)地將 $ 視為 “字符串結(jié)束”。因此認(rèn)為, cat$ 模式會(huì)匹配字符串 "lolcat" ,但不會(huì)匹配 "internet cat video"。

^ 的行為讓我認(rèn)為 $ 也是類似的,但這并不一定成立,而且這種行為取決于不同編程語(yǔ)言及其寫法。

特別是對(duì)于 Python 來(lái)說(shuō),如果禁用了多行模式(這是默認(rèn)設(shè)置),那么,$ 字符不僅可以匹配字符串的末尾,還可以匹配字符串末尾的換行符。

所以,如果你試圖匹配一個(gè)末尾沒(méi)有換行符的字符串,在 Python 中使用 $ 是做不到的!我本以為禁用多行模式后,就不會(huì)有這種匹配換行符的行為,但事實(shí)恰恰相反。

下一個(gè)合乎邏輯的問(wèn)題是,如何在 Python 中匹配一個(gè)末尾不含換行符的字符串?

在對(duì) Python 和其它正則表達(dá)式語(yǔ)法進(jìn)行多番研究后,我還發(fā)現(xiàn)了 \z\Z 可以用于匹配 “字符串結(jié)束” 字符。

在 Python 中,可以用 re.MULTILINE 來(lái)啟用多行模式,文檔的描述如下:

當(dāng)指定 re.MULTILINE 時(shí),模式字符 '$' 會(huì)匹配字符串末尾以及每一行末尾(包含換行符)。默認(rèn)情況下,'$' 只匹配字符串末尾以及字符串末尾的換行符之前(如果有的話)。

讓我們看看這些特性在不同平臺(tái)上是什么表現(xiàn):

模式匹配 "cat\n"? "cat$" 多行模式 "cat$" 無(wú)多行模式 "cat\z" "cat\Z"
PHP ? ? ? ?
ECMAScript ? ? ?? ??
Python ? ? ?? ?
Golang ? ? ? ??
Java 8 ? ? ? ?
.NET 7.0 ? ? ? ?
Rust ? ? ? ??
  • ?: 模式與字符串 "cat\n" 匹配
  • ?: 模式與字符串 "cat\n" 不匹配
  • ??: 模式無(wú)效或不支持該用法

綜合上述表格,如果要匹配換行符,那么在所有語(yǔ)言中使用多行模式的 $ ,都能匹配成功;但如果不想匹配換行符,事情就會(huì)變得復(fù)雜起來(lái)。

如果不想匹配換行符,在除了 Python 和 ECMAScript 外的其它語(yǔ)言中,你可以使用 \z。而在 Python 中,你需要使用 \Z ,在 ECMAScript 中使用非多行模式的 $。

今天這些關(guān)于正則表達(dá)式的知識(shí),你學(xué)會(huì)了么?

注意:上述數(shù)據(jù)表的信息收集自 regex101.com,我沒(méi)有用實(shí)際的編程環(huán)境進(jìn)行測(cè)試。


以上是今天的分享,最后推薦一下我的《Python潮流周刊》專欄。這是一個(gè)專為國(guó)內(nèi) Python 開(kāi)發(fā)者量身打造的資訊平臺(tái),為你挑選最值得分享的文章、教程、開(kāi)源項(xiàng)目、軟件工具、播客和視頻、熱門話題等內(nèi)容。

https://xiaobot.net/p/python_weekly?refer=2fc438e2-33fe-44bd-aa2f-ae7d8e782dea文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-852675.html

到了這里,關(guān)于正則表達(dá)式中 “$” 并不是表示 “字符串結(jié)束的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • java之字符串與正則表達(dá)式

    java之字符串與正則表達(dá)式

    目錄 String 構(gòu)造方法 注意 格式控制字符串 常用方法 StringBuilder與StringBuffer 特點(diǎn) 理解可變與不可變 字符串拼接方法 字符串刪除方法 字符串內(nèi)插入字符 字符串替換方法 字符串反轉(zhuǎn)方法 查字符串對(duì)應(yīng)索引處的字符? 截取字符串 正則表達(dá)式 正則表達(dá)式符號(hào)表 正則表達(dá)式常用方

    2023年04月22日
    瀏覽(25)
  • 【python】12.字符串和正則表達(dá)式

    【python】12.字符串和正則表達(dá)式

    正則表達(dá)式相關(guān)知識(shí) 在編寫處理字符串的程序或網(wǎng)頁(yè)時(shí),經(jīng)常會(huì)有查找符合某些復(fù)雜規(guī)則的字符串的需要,正則表達(dá)式就是用于描述這些規(guī)則的工具,換句話說(shuō)正則表達(dá)式是一種工具,它定義了字符串的匹配模式(如何檢查一個(gè)字符串是否有跟某種模式匹配的部分或者從一個(gè)

    2024年01月16日
    瀏覽(20)
  • 【動(dòng)態(tài)規(guī)劃】【字符串】C++算法:正則表達(dá)式匹配

    【動(dòng)態(tài)規(guī)劃】【字符串】C++算法:正則表達(dá)式匹配

    視頻算法專題 動(dòng)態(tài)規(guī)劃匯總 字符串 給你一個(gè)字符串 s 和一個(gè)字符規(guī)律 p,請(qǐng)你來(lái)實(shí)現(xiàn)一個(gè)支持 ‘.’ 和 ‘ ’ 的正則表達(dá)式匹配。 ‘.’ 匹配任意單個(gè)字符 \\\' ’ 匹配零個(gè)或多個(gè)前面的那一個(gè)元素 所謂匹配,是要涵蓋 整個(gè) 字符串 s的,而不是部分字符串。 示例 1: 輸入:

    2024年02月03日
    瀏覽(38)
  • Python 自學(xué)(五) 之字符串及正則表達(dá)式

    Python 自學(xué)(五) 之字符串及正則表達(dá)式

    目錄 1. 字符串的分割合并? split()? join()? ? ? ? ?P132 2. 字符串的檢索? ?count() find() index() startswith() endswith()? ? ? ? ?P134 3. 去除空格和特殊字符? ?strip()? lstrip() rstrip()? ? ? ? ? P139 4. 格式化字符串? ?format()? ? ? ? ?P142 5. 字符串編碼轉(zhuǎn)換? encode()? decode()? ? ? ? P145

    2024年01月25日
    瀏覽(29)
  • 【深入理解ES6】字符串和正則表達(dá)式

    字符串(String)是JavaScript6大原始數(shù)據(jù)類型。其他幾個(gè)分別是Boolean、Null、Undefined、Number、Symbol(es6新增)。 字符串里的字符有兩種: 前??個(gè)碼位均以16位的編碼單元表示的BMP字符(基本多文種平面。 超過(guò)??的UTF-16引入了代理對(duì),以兩個(gè)編碼單元32位表示輔助平面字符。 ES5中

    2024年02月13日
    瀏覽(26)
  • 使用正則表達(dá)式 移除 HTML 標(biāo)簽后得到字符串

    使用正則表達(dá)式 移除 HTML 標(biāo)簽后得到字符串

    在上述代碼中,stripHTMLTags 函數(shù)使用正則表達(dá)式 /[^]+/g 來(lái)匹配所有的 HTML 標(biāo)簽,并使用空字符串進(jìn)行替換,從而將 HTML 標(biāo)簽移除。 最后,返回移除 HTML 標(biāo)簽后的字符串。

    2024年02月14日
    瀏覽(24)
  • Unity利用正則表達(dá)式判斷字符串是否滿足要求

    首先該方法屬于C#,是C#提供的,不是unity提供的,但我使用這個(gè)是在unity中使用的,故此我將其歸入unity筆記。 該方式可用于注冊(cè)、登錄等等需要用戶輸入的場(chǎng)景,用以判斷字符串是否滿足正則表達(dá)式的要求 首先介紹該API 這里開(kāi)始介紹,大家可以看看官方的文檔Regex.IsMatch 方

    2024年01月16日
    瀏覽(23)
  • 【Python習(xí)題集4】字符串與正則表達(dá)式

    【Python習(xí)題集4】字符串與正則表達(dá)式

    1.輸人一個(gè)字符串,將該字符串中下標(biāo)為偶數(shù)的字符組成新串并通過(guò)字符串格式化方式顯示。 (1)源代碼 (2)運(yùn)行結(jié)果截圖 2.編寫程序,生成一個(gè)由15個(gè)不重復(fù)的大小寫字母組成的列表。 (1)源代碼 (2)運(yùn)行結(jié)果截圖 3.給定字符串\\\"site sea suede sweet see kase sse sseeloses\\\",匹配出所有以

    2024年02月02日
    瀏覽(46)
  • 正則表達(dá)式 vs. 字符串處理:解析優(yōu)勢(shì)與劣勢(shì)

    正則表達(dá)式 vs. 字符串處理:解析優(yōu)勢(shì)與劣勢(shì)

    1. 正則表達(dá)式起源與演變 正則表達(dá)式(Regular Expression)最早由美國(guó)數(shù)學(xué)家斯蒂芬·科爾內(nèi)基(Stephen Kleene)于1956年提出,用于描述字符串的模式匹配規(guī)則。隨后在計(jì)算機(jī)領(lǐng)域得到廣泛應(yīng)用,成為文本處理和匹配的重要工具。 正則可視化 | 一個(gè)覆蓋廣泛主題工具的高效在線平臺(tái)

    2024年03月27日
    瀏覽(27)
  • java 判斷字符串中有漢字 (常用正則表達(dá)式)

    今天在開(kāi)發(fā)中碰到了判斷字符串中是否有漢字的問(wèn)題,方便起見(jiàn),記錄下來(lái)以便后期查看。 1、判斷漢字 2、判斷數(shù)字 3、常用的正則表達(dá)式( 通過(guò)?Java常用正則表達(dá)式_正則表達(dá)式0到9_歐尼熊不懂的博客-CSDN博客) (1)校驗(yàn)數(shù)字的正則表達(dá)式 (2)校驗(yàn)字符的正則表達(dá)式 (

    2024年02月11日
    瀏覽(21)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包