0

有人可以告诉我为什么这个 if 条件不输出 Matched 以及如何使用 expr 更改 reg exp 模式以将输出显示为 Matched。问题是 var 变量中的 BH 可以是任何国家代码,例如 US 或 CA。变量中的所有其他字符保持不变。

var1="BH.EBS.EBS.BH.RCMS.RCMS.FBACCR"
if [ `expr $var1 : "*.EBS.EBS.*.RCMS.RCMS.FBACCR"` -gt 0 ]; then
echo "Matched"
else
echo "Not matched"
fi

谢谢高塔姆

4

1 回答 1

1

这样的事情会做到这一点:

.\.EBS\.EBS\...\.RCMS\.RCMS\.FBACCR

请记住,原始字符串中的点是正则表达式中的一种特殊类型的字符,这意味着它们不会被解释为点。相反,它说它可以是任何字符。然后你必须对它们进行转义,因此是反斜杠。

最后,在您需要匹配 BH 的地方,您可以使用点 .. 如果国家代码保证为 2 个字符长。如果没有,您可以改用:

.*\.EBS\.EBS\..*\.RCMS\.RCMS\.FBACCR
于 2020-07-18T00:42:19.773 回答