簡體   English   中英

Bash正則表達式帶引號

[英]Bash regular expression with quotes

我正在編寫腳本,並且想檢查變量的格式。 這是我使用的功能:

check_non_numeric() {
    #re='^\".*\"$'
    re='\[^\]*\'
    if ! [[ $1 =~ $re ]] ; then
        echo "'$1' is not a valid format - \"[name]\" "
        exit 1
    fi
}

我希望正則表達式匹配一個字符串,字符串中除了引號和引號外(“ a”或“ string”或“ dsfo!^ $ **#”)。 問題是我想出的這些正則表達式對我不起作用。 我使用了一個非常類似的函數來檢查變量是否為整數或浮點數,並且該變量在此處起作用。 你能告訴我正則表達式應該是什么嗎?

非常感謝你

如果要匹配除帶引號的字符串以外的任何內容,只需將引號作為目標:

re='["]'
if [[ ! $1 =~ $re ]] ; then

實際上,您不需要正則表達式。 通配就足夠了:

if [[ ! $1 = *\"* ]]; then
...
fi

我假設您的意思是要匹配不是用引號引起來的字符串的任何內容。 使用正則表達式進行匹配更容易進行匹配,而bash-test則將其“不”進行匹配-如果不清楚,請使用! 這有兩種方法。

if [[ ! $(expr "$string" : '\\".*\\"') -gt 0 ]]; then echo "expr good"; fi

if [[ ! "$string" =~ \\".*\\" ]]; then echo "test good"; fi

確保引用要使用expr測試的變量(該變量僅用於教育目的)。

您的正則表達式距離非常非常遙遠。 \\[與文字左方括號匹配,而^ (在字符類之外)與行首匹配。

如果確實需要的話,類似'^"[^"]*"'應該可以工作。

但是,我對此表示懷疑。 為了在文字雙引號中傳遞值,您需要

yourprogram '"value"'

要么

yourprogram "\"value\""

如果我是你,我當然想避免。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM