需要改进bash正则表达式

时间:2012-06-15 20:44:18

标签: regex bash

在我的bash脚本中,我使用正则表达式来匹配变量赋值字符串, 例如:

  1. Var = Value
  2. var = Value;
  3. 无功=值
  4. 无功=值;
  5. Var Value
  6. 我开发的正则表达式:\s*${varName}\s*\={0,1}\s*.*\s*;{0,1}

    这个正则表达式可以匹配上面的每个实例,但也可以匹配我不想要的另一个实例,即 VarValue

    我想不出让我的正则表达式与 VarValue 实例不匹配的方法。

2 个答案:

答案 0 :(得分:2)

\s*{varName}(?:\s*=\s*|\s+)(\w+)

我没有修改你的正则表达式,因为它对于这个工作来说似乎很复杂,但是这个会匹配上面列出的所有情况而不匹配VarValue。您的数据将在第1组中。

Play with the regex here

答案 1 :(得分:2)

修改你的:

\s*${varName}(\s?[\s\=]\s?).+\s*;{0,1}