包含文字 [ 和 ] 的模式

包含文字 [ 和 ] 的模式

使用以下beg_ere模式,我如何(asmb)用文字[和括起来]

#!/usr/local/bin/awk -f
BEGIN {
  beg_ere = "^[[:space:]]*([#;!]+|@c|//)[[:space:]]+(faml) [(asmb)]([[:space:]]*).*$"
}

$0 ~ beg_ere { print "MATCH" }

其中famlasmb是用户定义的字符串,或者如果不是用户定义的,则由 描述"[[:graph:]]+"

在这种情况下

beg_ere = "^[[:space:]]*([#;!]+|@c|//)[[:space:]]+(faml) [([[:graph:]]+)]([[:space:]]*).*$"

当使用包含以下几行的文件时,我没有打印 MATCH

## HD [opcon]

## HD [opcon] key

## HD [opcon] akey,bkey  

其中可以有任意数量的由逗号分隔的键。

答案1

你只需要用反斜杠转义它们即可。

但是,由于正则表达式位于双引号字符串中,因此需要转义反斜杠

  beg_ere = "^[[:space:]]*([#;!]+|@c|//)[[:space:]]+(HD) \\[([[:graph:]]+)\\]([[:space:]]*).*$"
  # .....................................................^^^..............^^^

相关内容