匹配字符串中的几个可能字符之一

时间:2012-08-04 21:48:00

标签: bash scripting

在bash(版本3.2.48)脚本中,我得到一个类似于:

的字符串
  

'XY'
  '是'   'YY'
  等等

所以,我有一个字母字符 OR 一个空格(第一个插槽),然后是相关字符(第二个插槽)。我尝试了一些变化(没有grep,sed,......),如:

  

if [[$ string =〜([[:space]] {1} | [[:alpha:]] {1})M]];然后

  

if [[$ string =〜(\ s {1} |。{1})M]];然后

但我的解决方案并不总是正常工作(正确匹配每个组合)。

3 个答案:

答案 0 :(得分:4)

这应该适合你:

if [[ $string =~ [[:space:][:alpha:]]M ]]; then

答案 1 :(得分:3)

if [[ ${string:1:1} == "M" ]]; then
    echo Heureka
fi

或(如果你想用模式做)

if [[ $string =~ ([[:space:]]|[[:alpha:]])M ]]; then
    echo Heureka
fi

或(甚至更简单)

if [[ $string == ?M ]]; then
    echo Heureka
fi

答案 2 :(得分:2)

不使用正则表达式,只需模式匹配即可:

if [[ $string == [[::upper:]\ ]M ]]; then
  echo match
fi

根据您的示例,您需要[[:upper:]]而不仅仅是[[:alpha:]]