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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Bash正則表達(dá)式-似乎無(wú)法匹配\ s,\ S等

Bash正則表達(dá)式-似乎無(wú)法匹配\ s,\ S等

SMILET 2019-11-04 14:00:01
我有一個(gè)腳本試圖從gparted獲取信息塊。我的數(shù)據(jù)如下:Disk /dev/sda: 42.9GBSector size (logical/physical): 512B/512BPartition Table: msdosNumber  Start   End     Size    Type     File system     Flags 1      1049kB  316MB   315MB   primary  ext4            boot 2      316MB   38.7GB  38.4GB  primary  ext4 3      38.7GB  42.9GB  4228MB  primary  linux-swap(v1)log4net.xmlModel: VMware Virtual disk (scsi)Disk /dev/sdb: 42.9GBSector size (logical/physical): 512B/512BPartition Table: msdosNumber  Start   End     Size    Type     File system     Flags 1      1049kB  316MB   315MB   primary  ext4            boot 5      316MB   38.7GB  38.4GB  primary  ext4 6      38.7GB  42.9GB  4228MB  primary  linux-swap(v1)我使用正則表達(dá)式將其分為兩個(gè)磁盤(pán)塊^磁盤(pán)(/ dev [\ S] +):((?! Disk)[\ s \ S])*這適用于多行。當(dāng)我在bash腳本中對(duì)此進(jìn)行測(cè)試時(shí),我似乎無(wú)法匹配\ s或\ S-我在做什么錯(cuò)?我正在通過(guò)如下腳本進(jìn)行測(cè)試:data=`cat disks.txt`morematches=1x=0regex="^Disk (/dev[\S]+):((?!Disk)[\s\S])*"if [[ $data =~ $regex ]]; thenecho "Matched"while [ $morematches == 1 ]do        x=$[x+1]        if [[ ${BASH_REMATCH[x]} != "" ]]; then                echo $x "matched" ${BASH_REMATCH[x]}        else                echo $x "Did not match"                morematches=0;        fidonefi但是,當(dāng)我遍歷正則表達(dá)式的各個(gè)部分時(shí),無(wú)論何時(shí)匹配\ s或\ S,它都不起作用-我在做什么錯(cuò)?
查看完整描述

3 回答

?
婷婷同學(xué)_

TA貢獻(xiàn)1844條經(jīng)驗(yàn) 獲得超8個(gè)贊

因?yàn)檫@是一個(gè)常見(jiàn)的常見(jiàn)問(wèn)題解答,所以讓我列出一些Bash不支持的結(jié)構(gòu),以及如何解決它們,這里有一個(gè)簡(jiǎn)單的解決方法。

正則表達(dá)式有多種常用方言。Bash支持的是擴(kuò)展正則表達(dá)式的變體。例如,這不同于許多在線正則表達(dá)式測(cè)試器支持的功能,后者通常是更現(xiàn)代的Perl 5 / PCRE變體。

  • 擊不支持\d \D \s \S \w \W-這些可以與POSIX字符類(lèi)等同替換[[:digit:]],[^[:digit:]][[:space:]],[^[:space:]][_[:alnum:]],和[^_[:alnum:]],分別。(請(qǐng)注意最后一種情況,其中[:alnum:]POSIX字符類(lèi)使用下劃線增強(qiáng),以完全等同于Perl的\w速記形式。)

  • Bash不支持非貪婪匹配。有時(shí)您可以a.*?b用類(lèi)似的東西代替,a[^ab]*b以在實(shí)踐中獲得類(lèi)似的效果,盡管兩者并不完全相同。

  • Bash不支持非括號(hào)(?:...)。在平凡的情況下,只需使用捕獲括號(hào)即可(...);當(dāng)然,如果您使用捕獲組和/或反向引用,則會(huì)重新編號(hào)捕獲組。

  • 擊不支持lookarounds像(?<=before)或者(?!after),事實(shí)上任何與(?是一個(gè)Perl擴(kuò)展。盡管您經(jīng)??梢詫?wèn)題改寫(xiě)為可以避免環(huán)顧的問(wèn)題,但沒(méi)有簡(jiǎn)單的常規(guī)解決方法。


查看完整回答
反對(duì) 回復(fù) 2019-11-04
?
當(dāng)年話下

TA貢獻(xiàn)1890條經(jīng)驗(yàn) 獲得超9個(gè)贊

從 man bash


可以使用附加的二進(jìn)制運(yùn)算符=?,其優(yōu)先級(jí)與==和!=相同。使用它時(shí),運(yùn)算符右邊的字符串將被視為 擴(kuò)展的正則表達(dá)式并進(jìn)行相應(yīng)的匹配(如regex(3)中一樣)。


ERE不支持先行/后退。但是,您的代碼((?!Disk))中有它們。


這就是為什么您的正則表達(dá)式不符合您預(yù)期的原因。


查看完整回答
反對(duì) 回復(fù) 2019-11-04
  • 3 回答
  • 0 關(guān)注
  • 504 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

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