Regex 带引号的Bash正则表达式
我正在写一个脚本,我想检查一个变量的格式。这是我使用的函数:Regex 带引号的Bash正则表达式,regex,bash,Regex,Bash,我正在写一个脚本,我想检查一个变量的格式。这是我使用的函数: check_non_numeric() { #re='^\".*\"$' re='\[^\]*\' if ! [[ $1 =~ $re ]] ; then echo "'$1' is not a valid format - \"[name]\" " exit 1 fi } 我希望正则表达式能够匹配一个字符串,但其内部不能有引号,其周围不能有引号(“a”或“string
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
由于要将字符串以外的任何内容与引号进行匹配,只需将引号作为目标:
re='["]'
if [[ ! $1 =~ $re ]] ; then
实际上你不需要正则表达式。全球化就足够了:
if [[ ! $1 = *\"* ]]; then
...
fi
我假设您的意思是要匹配任何不是由引号包围的字符串的内容。使用正则表达式进行匹配更容易,而bash测试“不”进行匹配——如果不清楚,请使用
代码>。这里有几种方法
如果[[!$(expr“$string”:“\”*\”)-gt 0]];然后呼应“expr good”;fi
如果[[!“$string”=~\“*\”];然后回应“测试良好”;fi
请确保引用您正在使用expr测试的变量(该变量仅用于启发目的)。我假设您的意思是要匹配任何不包含引号的字符串的内容。使用正则表达式进行匹配更容易,而bash测试“不”进行匹配——如果不清楚,请使用代码>。这里有几种方法
如果[[!$(expr“$string”:“\”*\”)-gt 0]];然后呼应“expr good”;fi
如果[[!“$string”=~\“*\”];然后回应“测试良好”;fi
请确保引用您正在使用expr测试的变量(该变量仅供参考)。您的正则表达式非常非常遥远<代码>\[
匹配文字左方括号,^
(字符类之外)匹配行首
类似于“^”[^”]*”
的东西应该可以工作,如果这是您真正想要的
然而,我有点怀疑,为了用双引号传递一个值,你需要
yourprogram '"value"'
或
如果我是你的话,我肯定会避免这种情况。你的正则表达式非常非常遥远。\[
匹配一个文本左方括号,^
(字符类之外)匹配行的开头
类似于“^”[^”]*”
的东西应该可以工作,如果这是您真正想要的
然而,我有点怀疑,为了用双引号传递一个值,你需要
yourprogram '"value"'
或
如果我是你的话,我当然希望避免这种情况。试试re='^[^“]*$”
这可以接受你想要的一切。我不知道你想要什么。你想在字符串周围加引号,但不想在字符串内部加引号吗?还是根本不想加引号?不想编辑,但我相信你的意思是“字符串内部加引号”“Tryre=”^[^“]*$”
这可以接受一切我不知道你想要什么。你想在字符串周围加引号,但不想在字符串内部加引号吗?还是根本不想加引号?不想编辑,但我相信你的意思是“字符串内部,带引号”我可能知道为什么-我用“while getopts”获得名称循环,我像“check_non_numeric”$OPTARG一样使用它,但当我尝试在函数中回显它时,它显示没有它们-我将尝试找到如何在变量中保留它们我可能知道为什么-我用“while getopts”循环得到名称,我像“check_non_numeric”$OPTARG一样使用它,但当我尝试在函数中回显它时,它显示没有它们-我将尝试找到如何将它们保存在变量中她不需要yourprogram的“value”
,如果他不是将字符串作为参数传递给脚本,而是将其作为文件中的一行读取-我几乎可以肯定是这样的。他不需要yourprogram的“value”“
如果他不是将字符串作为参数传递给脚本,而是将其作为文件中的一行读取——我几乎可以肯定是这样。