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

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

檢查字符串是否與Bash腳本中的正則表達式匹配

檢查字符串是否與Bash腳本中的正則表達式匹配

梵蒂岡之花 2019-11-08 10:16:38
我的腳本收到的參數(shù)之一是以下格式的日期:yyyymmdd。我想檢查輸入的日期是否有效。我怎樣才能做到這一點?我正在嘗試使用如下正則表達式:[0-9]\{\8}
查看完整描述

3 回答

?
回首憶惘然

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

你可以說:


[[ $date =~ ^[0-9]{8}$ ]] && echo "yes"

或更準確地說:


[[ $date =~ ^[0-9]{4}(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])$ ]] && echo "yes"

#           |^^^^^^^^ ^^^^^^ ^^^^^^  ^^^^^^ ^^^^^^^^^^ ^^^^^^ |

#           |   |     ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^ |

#           |   |          |                   |              |

#           |   |           \                  |              |

#           | --year--   --month--           --day--          |

#           |          either 01...09      either 01..09     end of line

# start of line            or 10,11,12         or 10..29

#                                              or 30, 31

也就是說,您可以在bash中定義與所需格式匹配的正則表達式。這樣,您可以執(zhí)行以下操作:


[[ $date =~ ^regex$ ]] && echo "matched" || echo "did not match"

請注意,這是基于Aleks-Daniel Jakimenko 在bash中的用戶輸入日期格式驗證中的解決方案。


在其他Shell中,可以使用grep。如果您的外殼符合POSIX,請執(zhí)行


(echo "$date" | grep -Eq  ^regex$) && echo "matched" || echo "did not match"

在不符合POSIX的fish中,您可以執(zhí)行


echo "$date" | grep -Eq "^regex\$"; and echo "matched"; or echo "did not match"


查看完整回答
反對 回復 2019-11-08
?
米琪卡哇伊

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

我會使用expr match而不是=~:


expr match "$date" "[0-9]\{8\}" >/dev/null && echo yes

這比當前接受的使用方法更好,=~因為它=~還會匹配空字符串,恕我直言,它不應該。假設badvar未定義,則[[ "1234" =~ "$badvar" ]]; echo $?給出(不正確)0,而expr match "1234" "$badvar" >/dev/null ; echo $?給出正確的結果1。


我們必須使用>/dev/nullhide expr match的輸出值,這是匹配的字符數(shù);如果找不到匹配項,則為0。請注意,其輸出值與退出狀態(tài)不同。如果找到匹配項,則退出狀態(tài)為0,否則為1。


通常,的語法為expr:


expr match "$string" "$lead"

要么:


expr "$string" : "$lead"

$lead正則表達式在哪里 它的exit status將是真正的(0),如果lead匹配的領先的切片string(是否有此名字嗎?)。例如,expr match "abcdefghi" "abc"退出true,但expr match "abcdefghi" "bcd"退出false。(感謝@Carlo Wood指出了這一點。


查看完整回答
反對 回復 2019-11-08
  • 3 回答
  • 0 關注
  • 1070 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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