为什么这个grep命令不起作用

时间:2012-03-19 01:05:17

标签: regex

我正在尝试编写一个grep命令,该命令将匹配python函数声明,格式为

def hello(你好)

所以def,一个空格,一个以字母,数字或下划线开头的单词,左括号,另一个单词,闭括号。我正在使用命令

grep ^"def "[/-a-zA-z0-9][a-zA-z0-0]*[/(][a-zA-z0-9]*[/)]$ 

但是我得到一个语法错误,说不相关的令牌附近(。我无法弄清楚我做错了什么。任何想法?

2 个答案:

答案 0 :(得分:1)

我认为你想要反斜杠而不是正斜杠。

答案 1 :(得分:1)

我认为有几个错误。这是应该工作的:

grep '^def [_a-zA-Z0-9][a-zA-Z0-9 ]*[\(][a-zA-Z0-9 ][a-zA-Z0-9 ]*[\)]$'
  • 我在正则表达式
  • 的开头用下划线替换了你的/ -
  • 我调整了反斜杠括号
  • 我在课程中添加了一些空格以备不时之需
  • 我在左括号后加了一个'[a-zA-Z0-9]'来保证括号内至少有一个字母。如果要在括号中允许空文本,可以将其删除