在bash(版本3.2.48)脚本中,我得到一个类似于:
的字符串'XY'
'是' 'YY'
等等
所以,我有一个字母字符 OR 一个空格(第一个插槽),然后是相关字符(第二个插槽)。我尝试了一些变化(没有grep,sed,......),如:
if [[$ string =〜([[:space]] {1} | [[:alpha:]] {1})M]];然后
和
if [[$ string =〜(\ s {1} |。{1})M]];然后
但我的解决方案并不总是正常工作(正确匹配每个组合)。
答案 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:]]