有人可以帮我找到下面模式的正则表达式,
我正在尝试使用正则表达式来匹配shell脚本中的模式。
该模式可以是'ab''xy''ij''pqr'的组合,以任何顺序分隔,并用逗号分隔,'或'仅'全部'
实施例
1) "ab,xy,ij,pqr" - valid
2) "ij,pqr" - valid
3) "all" - valid
4) "ij,ab," - invalid because it ends with a comma
5) "all,xy" - invalid because 'all' cannot be combined with xy ij pqr or ab
6) ",xy" - invalid because it starts with comma
7) "xy" - valid
谢谢。
@konsolebox @ 491243 @ ajp15243 @Jerry 看起来我做错了什么,它只适用于RE regex4 =“(ab | xy | ij | pqr)(,(ab | xy | ij | pqr))*”到目前为止,仅当字符串是像“ab,xy”只是“ab”不起作用。 以下是我到目前为止的尝试:
#!/usr/bin/ksh
echo
echo echo $1
echo
regex2="^(all|(ab|xy|ij|pqr)(,(ab|xy|ij|pqr))*)$"
regex3="^(all|(ab|xy|ij|pqr)(,(ab|xy|ij|pqr))*)$"
regex4="(ab|xy|ij|pqr)(,(ab|xy|ij|pqr))*"
if [[ $1 == $regex2 ]]
then
echo "You got it again 22222222 !"
fi
if [[ $1 == $regex3 ]]
then
echo "You got it again 33333333 !"
fi
if [[ $1 == $regex4 ]]
then
echo "You got it again 44444444 !"
fi
输出:
$
$ test.ksh ab,xy
echo ab,xy
You got it again 44444444 !
$
$
$
$ test.ksh ab
echo ab
$
太平洋标准时间1:30
好的,有一些改进:
"((ab|xy|ij|pqr)|(ab|xy|ij|pqr)(,(ab|xy|ij|pqr))*)|all)$"
当输入为“xy”,“xy,ab”时,它会起作用,但它也将“xy,ab,all”视为有效输入。
答案 0 :(得分:1)
答案 1 :(得分:1)
可能这个:
^(all|(ab|xy|ij|pqr)(,(ab|xy|ij|pqr))*)$
答案 2 :(得分:0)
好的,看起来最后是下面的REworked,谢谢大家的帮助。
(all)|(ab|xy|ij|pqr)|(ab|xy|ij|pqr)(,(ab|xy|ij|pqr)*)