我需要幫助來了解如何檢查變量是否與定義的正則表達式匹配。假設我有VAR1="Abcd,1234"
,所有變量必須與regexpr波紋管匹配。正如我們看到的,由於它有一個逗號,我的var不匹配,所以如何檢查? 我創建了下面的if語句,但沒有工作:BASH檢查變量是否匹配regexpr
IF [[ ${VAR1} == ^[a-zA-Z0-9`[email protected]#$%^&*()_+-={}|[]:";'?] ]]
謝謝。
我需要幫助來了解如何檢查變量是否與定義的正則表達式匹配。假設我有VAR1="Abcd,1234"
,所有變量必須與regexpr波紋管匹配。正如我們看到的,由於它有一個逗號,我的var不匹配,所以如何檢查? 我創建了下面的if語句,但沒有工作:BASH檢查變量是否匹配regexpr
IF [[ ${VAR1} == ^[a-zA-Z0-9`[email protected]#$%^&*()_+-={}|[]:";'?] ]]
謝謝。
#!/bin/bash
regex="^[^,]*[^ ,][^,]*$"
var="$1"
if [[ "$var" =~ $regex ]]
then
echo "matches";
else
echo "doesn't match!";
fi
,入住一些字符串沒有逗號..
正則表達式過於複雜'^ [^,] + $'將足以確保至少有一個字符不是空格或逗號(與您的行爲具有完全相同的行爲)。 – Tensibai
@Tensibai是的!沒錯。 – johnnynemonic
@Tensibai這兩個正則表達式是不一樣的。 johnnynemonic的表達式將匹配你的字符串「x」。不過,我同意你的正則表達式與OP的意圖相符。 –
你必須正確地使用'\'轉義符在你的正則表達式。 – acornagl