第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用正則表達式拆分具有相同標題的數(shù)據(jù)塊

使用正則表達式拆分具有相同標題的數(shù)據(jù)塊

Go
當年話下 2022-12-19 20:02:03
我有一個像這樣構(gòu)建的長字符串:[[title]]a = "1"b = "1"c = "1"d = "1"e = [ "1", "1",][[title]]a = "2"b = "2"c = "2"d = "2"e = [ "2",][[title]]a = "a3"b = "3"c = "3"[[title]]a = "a4"b = "4"c = "4"e = [ "4",]我的目標是提取每個標題中的文本(沒有標題)并將其放入切片中。我試過使用屬性鍵(如 d 和 e),但有時它們不存在。您可以在下面查看我的正則表達式:(?m)(((\[\[title]]\s*\n)(?:^.+$\n)+?)(d.*?$)(\s*e(.|\n)*?])?)我想找到一種方法來提取每個標題之間的數(shù)據(jù),直到 \n 或字符串結(jié)尾編輯:我正在使用 GO,所以我不能使用 look around \ behind 語法
查看完整描述

4 回答

?
拉莫斯之舞

TA貢獻1820條經(jīng)驗 獲得超10個贊

您可以使用以下匹配 from[[title]]到空行的模式。

`\[\[title]](.*?)^$`gms

解釋

  • \[\[title]]比賽[[title]]

  • (捕獲組

    • .*?非貪婪匹配直到下一場比賽

  • )關(guān)閉群組

  • ^$使用m(多行)標志這意味著空行

查看使用Golang正則表達式引擎的演示


查看完整回答
反對 回復 2022-12-19
?
米琪卡哇伊

TA貢獻1998條經(jīng)驗 獲得超6個贊

這似乎有效。它不像@ArtyomVancyan 的回答那么簡單或優(yōu)雅,盡管它有一點優(yōu)勢,即它不需要在表達式末尾換行:

[演示]

(?m)(?:\[\[title]]\n((?:.*\n)+?(?:\]|^$)))+

解釋:

  • (?m): 多行修飾符。

  • (?:\[\[title]]\n(<text until next closing square bracket or blank line>))+:找到一個或多個以 開頭[[title]]\n和后跟的塊<text until next closing square bracket or blank line>,并捕獲這些文本。

  • (?:.*\n)+?(?:\]|^$):兩個連續(xù)的非捕獲子組;第一個是一堆線,(?:.*|n)+,非貪婪的,?; 第二個是右方括號], 或空行^$. 也就是說,一堆行以包含右方括號或空行的第一行結(jié)尾。


查看完整回答
反對 回復 2022-12-19
?
繁花不似錦

TA貢獻1851條經(jīng)驗 獲得超4個贊

您可以使用一種模式來重復標題部分下行的可能格式。

這些行以單詞字符開頭,后跟=一部分"..."[...]

\[\[title]]((?:\r?\n\w+\s*=\s*(?:"[^"]*"|\[[^\]\[]*]))*)

解釋

  • \[\[title]]比賽[[title]]

  • (捕獲組 1

    • \r?\n匹配一個換行符

    • \w+\s*=\s*匹配 1+ 個單詞字符和=可選的空白字符之間

    • (?:備選方案的非捕獲組

    • )關(guān)閉非捕獲組

    • "[^"]*"匹配來自"..."

    • |要么

    • \[[^\]\[]*]匹配從[...]

    • (?:非捕獲組

    • )*關(guān)閉非捕獲組并可選擇重復

    • )關(guān)閉第 1 組

    正則表達式演示


    查看完整回答
    反對 回復 2022-12-19
    ?
    胡子哥哥

    TA貢獻1825條經(jīng)驗 獲得超6個贊

    與其制作一個看起來充滿危險的正則表達式,不如為你的自定義格式構(gòu)建一個自定義解析器可能會更好,或者你可能會發(fā)現(xiàn)你可以重新利用INI configparser的實現(xiàn)


    如果標題總是被定義為在塊的對內(nèi)[[]] 和塊的開頭,您可以使用正則表達式來查找它們,但只能將它們分開


    如果您對內(nèi)容不感興趣(當然下一步就是您)并且您確定結(jié)構(gòu)如您所展示的那樣簡單,您也可以直接在這些內(nèi)容上拆分兩次


    >>> long_string_config = """ """  # input data omitted for brevity

    >>> for block in filter(None, (a.split("]]")[-1].strip() for a in long_string_config.split("[["))):

    ...    print("---")

    ...    print(block)

    ...

    ---

    a = "1"

    b = "1"

    c = "1"

    d = "1"

    e = [

     "1",

     "1",

    ]

    ---

    a = "2"

    b = "2"

    c = "2"

    d = "2"

    e = [

     "2",

    ]

    ---

    a = "a3"

    b = "3"

    c = "3"

    ---

    a = "a4"

    b = "4"

    c = "4"

    e = [

     "4",

    ]


    查看完整回答
    反對 回復 2022-12-19
    • 4 回答
    • 0 關(guān)注
    • 143 瀏覽
    慕課專欄
    更多

    添加回答

    舉報

    0/150
    提交
    取消
    微信客服

    購課補貼
    聯(lián)系客服咨詢優(yōu)惠詳情

    幫助反饋 APP下載

    慕課網(wǎng)APP
    您的移動學習伙伴

    公眾號

    掃描二維碼
    關(guān)注慕課網(wǎng)微信公眾號