![包含文字 [ 和 ] 的模式](https://linux22.com/image/217436/%E5%8C%85%E5%90%AB%E6%96%87%E5%AD%97%20%5B%20%E5%92%8C%20%5D%20%E7%9A%84%E6%A8%A1%E5%BC%8F.png)
使用以下beg_ere
模式,我如何(asmb)
用文字[
和括起来]
?
#!/usr/local/bin/awk -f
BEGIN {
beg_ere = "^[[:space:]]*([#;!]+|@c|//)[[:space:]]+(faml) [(asmb)]([[:space:]]*).*$"
}
$0 ~ beg_ere { print "MATCH" }
其中faml
和asmb
是用户定义的字符串,或者如果不是用户定义的,则由 描述"[[: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:]]*).*$"
# .....................................................^^^..............^^^