Linux shell里用正则表达式怎么表示一段文字,只包括英文字母和空格

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux shell里用正则表达式怎么表示一段文字,只包括英文字母和空格相关的知识,希望对你有一定的参考价值。

str="这里是你所谓的一段文字"
echo "$str" | egrep "^[a-zA-Z ]*$" >/dev/null
if [ $? -eq 0 ]; then
echo "The string is accepted."
else
echo "The string is NOT accepted!"
fi

--------------------------------
^[a-zA-Z ]*$
这就是你要的正则表达式,方括号中包括小写字母、大写字母和空格。
参考技术A echo+文字追问

是正则表达式.....

追答

^(?:(?i)[a-z]+)$
这个表达式适用DEELX表达式引擎

^和$表示开始和结束位置
(?:。。。。。)表示这是一个非捕获组,提高匹配速度
(?i)是模式修改符,表示不区分大小写
[a-z]表示是字母从a到z都可以
+表示最少一个,最多不限制

追问

那空格怎么办?

追答

加个\s 匹配空格

本回答被提问者采纳

linux下怎么批量重命名这些文件

参考技术A rename

相关命令:mv

rename 用于 对文件进行命名管理,可进行批量命名并支持正则表达式, rename命令存在两个版本用法上有所区别 一个是 C语言版本支持通配符,另一个是 Perl版本.支持正则表达式

参数

-n 操作预览,在不更改文件名称情况下,显示执行后的结果
-f 强制执行

【常用通配符说明】
? 表示一个任意字符
* 表示一个或一串任意字符
-------------------------------------------------
【常用正则表达式符号说明】
^ 匹配输入的开始位置
$ 匹配输入的结尾
. 匹配除换行符外的任意字符
+ 匹配前一个字符一次或多次 例如,"zo+"可以匹配"zoo",但不匹配"z"
[a-z] 表示某个范围内的字符,例如,"[a-z]"匹配"a"与"z"之间的任何一个小写字母字符。
[^m-z] 否定的字符区间。与不在指定区间内的字符匹配。

以上是关于Linux shell里用正则表达式怎么表示一段文字,只包括英文字母和空格的主要内容,如果未能解决你的问题,请参考以下文章

linux下怎么批量重命名这些文件

Linux Shell编程

Shell编程之正则表达式(sed)

shell中怎么判断输入的是不是是数字?

linux通配符

Linux Shell正则表达式如何匹配1~3位数字