正则表达式
时间:2010-04-29 来源:sjtlqy
匹配以a开头,t结尾的字符:
egrep "^a.*t$" a.txt 在a.txt中查找相应的字符。
如果对这些字符的个数 ,就可以在后面添上wc -w来用于计数。
^表示字符的开头标志。
.号表示匹配一次。
$表示,字符串的结尾。
egrep "\<.at\>" 可以匹配以at结尾的所有单词,\其实说明了要匹配的是一个单词。
字符集的应用:
egrep "{asd]at" 这样就匹配以a s d开头的,以at结尾的字符。
也可以同样的匹配单词字符串。egrep "<\[asd]at\>" a.txt
大写字母开头,小写字母结尾的字符。
egrep "^[[:upper:]]t$"
就可以显示以大写字母开头的,t结尾的字符。
upper是一个字符类。
正则表达式是工作中常用的工具,特在这总结一下。
java中使POSIX正则字符类表示如下
然而Java中有更简便的方法,就是使用预定义字符类,列表如下
在Linux shell的egrep,grep,sed,awk中,使用POSIX字符类比较长了,[:class:]为形式
如[:alpha:]相当于a-zA-Z,因此表示多个字母的形式为[a-zA-Z]*或者[[:alpha:] 匹配字母. 等同于 A-Za-z,更多的字符类如下
[:blank:] 匹配一个空格或是一个制表符(tab)
[:cntrl:] 匹配控制字符.
[:digit:] 匹配(十进制)数字. 等同于 0-9.
[:graph:] (可打印的图形字符). 匹配 ASCII 码值的 33 - 126 之间的字符.这和[:print:]一样,但不包括空格字符
[:lower:] 匹配小写字母. 等同于 a-z
[:print:] (可打印字符). 匹配 ASCII码值 32 - 126 之间的字符. 这和[:graph:]一样,但是增多一个空格字符
[:space:] 匹配空白字符 (空格符和水平制表符)
[:upper:] 匹配大写字母. 等同于 A-Z
[:xdigit:] 匹配十六进制数字. 等同于 0-9A-Fa-f[:alpha:]]*
#!/bin/bash 确定需要执行的shell的种类
echo "hello world!" 可以显示文本
log ="monday"
echo "the vaule of log is"
echo $log
通过赋值来显示一个内容-bash-3.00$ cat a.sh
#!/bin/bash
log=monday
echo "the vaule of log is"
echo "log is ${log}out
echo $log
echo \$
-bash-3.00$ sh a.sh
the vaule of log is
log is mondayout
echo monday
echo $
通过``和‘’和“”的作用做一个举例:
log=saturday
echo "today is $log"
echo 'today is $log'
echo "today is ``data`"
下面举例是if判断的用法
ech "Enter password"
read password
if ["$password"="mypassword"];
then
echo "welcom"
fi
case语句也是一种很好的,类似于c语言中的case:
do while语句:
egrep "^a.*t$" a.txt 在a.txt中查找相应的字符。
如果对这些字符的个数 ,就可以在后面添上wc -w来用于计数。
^表示字符的开头标志。
.号表示匹配一次。
$表示,字符串的结尾。
egrep "\<.at\>" 可以匹配以at结尾的所有单词,\其实说明了要匹配的是一个单词。
字符集的应用:
egrep "{asd]at" 这样就匹配以a s d开头的,以at结尾的字符。
也可以同样的匹配单词字符串。egrep "<\[asd]at\>" a.txt
大写字母开头,小写字母结尾的字符。
egrep "^[[:upper:]]t$"
就可以显示以大写字母开头的,t结尾的字符。
upper是一个字符类。
正则表达式是工作中常用的工具,特在这总结一下。
java中使POSIX正则字符类表示如下
\p{Lower} | 小写字母字符:[a-z] |
\p{Upper} | 大写字母字符:[A-Z] |
\p{ASCII} | 所有 ASCII:[\x00-\x7F] |
\p{Alpha} | 字母字符:[\p{Lower}\p{Upper}] |
\p{Digit} | 十进制数字:[0-9] |
\p{Alnum} | 字母数字字符:[\p{Alpha}\p{Digit}] |
\p{Punct} | 标点符号:!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ |
\p{Graph} | 可见字符:[\p{Alnum}\p{Punct}] |
\p{Print} | 可打印字符:[\p{Graph}\x20] |
\p{Blank} | 空格或制表符:[ \t] |
\p{Cntrl} | 控制字符:[\x00-\x1F\x7F] |
\p{XDigit} | 十六进制数字:[0-9a-fA-F] |
\p{Space} | 空白字符:[ \t\n\x0B\f\r] |
. | 任何字符(与行结束符可能匹配也可能不匹配) |
\d | 数字:[0-9] |
\D | 非数字: [^0-9] |
\s | 空白字符:[ \t\n\x0B\f\r] |
\S | 非空白字符:[^\s] |
\w | 单词字符:[a-zA-Z_0-9] |
\W | 非单词字符:[^\w] |
在Linux shell的egrep,grep,sed,awk中,使用POSIX字符类比较长了,[:class:]为形式
如[:alpha:]相当于a-zA-Z,因此表示多个字母的形式为[a-zA-Z]*或者[[:alpha:] 匹配字母. 等同于 A-Za-z,更多的字符类如下
[:blank:] 匹配一个空格或是一个制表符(tab)
[:cntrl:] 匹配控制字符.
[:digit:] 匹配(十进制)数字. 等同于 0-9.
[:graph:] (可打印的图形字符). 匹配 ASCII 码值的 33 - 126 之间的字符.这和[:print:]一样,但不包括空格字符
[:lower:] 匹配小写字母. 等同于 a-z
[:print:] (可打印字符). 匹配 ASCII码值 32 - 126 之间的字符. 这和[:graph:]一样,但是增多一个空格字符
[:space:] 匹配空白字符 (空格符和水平制表符)
[:upper:] 匹配大写字母. 等同于 A-Z
[:xdigit:] 匹配十六进制数字. 等同于 0-9A-Fa-f[:alpha:]]*
#!/bin/bash 确定需要执行的shell的种类
echo "hello world!" 可以显示文本
log ="monday"
echo "the vaule of log is"
echo $log
通过赋值来显示一个内容-bash-3.00$ cat a.sh
#!/bin/bash
log=monday
echo "the vaule of log is"
echo "log is ${log}out
echo $log
echo \$
-bash-3.00$ sh a.sh
the vaule of log is
log is mondayout
echo monday
echo $
通过``和‘’和“”的作用做一个举例:
log=saturday
echo "today is $log"
echo 'today is $log'
echo "today is ``data`"
下面举例是if判断的用法
ech "Enter password"
read password
if ["$password"="mypassword"];
then
echo "welcom"
fi
case语句也是一种很好的,类似于c语言中的case:
do while语句:
#!/bin/bash
sum=0
number=1
while test $number -le 100
do
sum=$[ $sum + $number ]
let number =$number + 1
done
echo "The sum is $sum "
以上是do while语句的作用实例
le是less or equal的意思
相关阅读 更多 +