grep - Why does this regex not work for matching C integer declarations? -
i'm using following regular expression match c integer declarations without initialization. integer might unsigned:
^(unsigned[[:space:]]+|^$)int[[:space:]]+[a-za-z0-9_]+;$
the first part matches unsigned
followed number of spaces, or nothing. second part matches int
followed spaces, plus variable name , semicolon.
unfortunately, seems not match integer declaration doesn't have unsigned
in it. doing wrong? ^$
in (...|...)
pattern expect (match empty string)? google , regex manual isn't helping.
try this:
^[[:space:]]*(unsigned[[:space:]]+)?int[[:space:]]+[a-za-z0-9_]+;[[:space:]]*$
to make group optional, put ?
after it. ^$
doesn't match empty string in middle of match, matches entirely empty string -- ^
matches beginning of string, , $
matches end of string.
Comments
Post a Comment