Regex 使用正则表达式检查句子中是否有特殊字符和符号
我想在shell脚本中使用正则表达式检查文本文件中的行中是否有特殊字符。 假设有一句话“assccñasas” 如何检查行中是否有“ñ”,因此应将其作为错误输出。 我还想检查是否有诸如“/”或“^”或“&”等符号 我的代码:Regex 使用正则表达式检查句子中是否有特殊字符和符号,regex,bash,shell,sh,Regex,Bash,Shell,Sh,我想在shell脚本中使用正则表达式检查文本文件中的行中是否有特殊字符。 假设有一句话“assccñasas” 如何检查行中是否有“ñ”,因此应将其作为错误输出。 我还想检查是否有诸如“/”或“^”或“&”等符号 我的代码: VALID='^[a-zA-Z_0-9&.<>/|\-]+$' #myregex checkError(){ if [[ $line =~ $VALID ]]; then echo "tes" else e
VALID='^[a-zA-Z_0-9&.<>/|\-]+$' #myregex
checkError(){
if [[ $line =~ $VALID ]]; then
echo "tes"
else
echo "not okay"
exit 1
fi
}
while read line
do
checkRusak
done < $1
VALID='^[a-zA-Z_0-9&./\-]+$”\myregex
checkError(){
如果[[$line=~$VALID]];则
回声“tes”
其他的
回声“不好”
出口1
fi
}
读行时
做
切克鲁萨克
已完成<$1
例如,如果有“StÀck Overflow”语句,那么它将输出错误。如果出现“堆栈溢出”语句,则仍然输出错误。
但如果只有“堆栈溢出”(无符号或特殊字符),它将输出“test”
到目前为止,它可以检查符号(“/”或“\”等),但在特殊字符中仍然存在问题
非常感谢您的帮助,
提前谢谢你你也可以
- 定义,哪些字符有效,并且只允许这些或
- 定义哪些字符无效,并检查是否有无效字符
[^a-zA-Z_0-9\s]
方括号内的^
否定字符类,因此它匹配包含非字母a-Z
、a-Z
、数字、下划线或空白字符的任何字符串
因为您想要检测单个字符,所以不需要量词
您所拥有的(除了名称不匹配之外)有什么问题吗?问题是正则表达式仍然能够识别特殊字符(如上文所述)。就像这里显示的特殊字符:。像这样。但我希望程序能够检测是否有特殊字符和一些符号(不是全部),如“/”、“*”、“(”等问题是,bash regex高度依赖于系统上的区域设置定义和regex引擎的实现(是否进行排序规则扩展)。启用区域设置扩展,并且在排序规则扩展中,在区域设置中,在排序规则扩展中,定义了介于
a-z
之间的区域设置中,[a-z]+
将匹配整个字符串“assccñasas”
。例如,此代码[[“assccñasas”=~([a-z]*)]]]]和&echo“${BASH_REMATCH[1]}”
在我的Cygwin安装上输出assccñasas
。