什么是多个单词组合的正则表达式

时间:2013-09-12 17:42:28

标签: regex shell

有人可以帮我找到下面模式的正则表达式,

我正在尝试使用正则表达式来匹配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”视为有效输入。

3 个答案:

答案 0 :(得分:1)

我认为这样做会。

^(((ab|xy|ij|pqr)(,(ab|xy|ij|pqr))*)|all)$

答案 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)*)