diff options
author | Guido van Rossum <guido@python.org> | 1991-12-31 00:00:35 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 1991-12-31 00:00:35 (GMT) |
commit | 5fca8a1b0d84a5e42fd572de1b22a1e2fcf46fd8 (patch) | |
tree | 11914444af0199f67c2ce0bf23d62d5a34c93746 /Lib/grep.py | |
parent | 9f39fbb5b7b2e5066c770a784294f6be70e6439a (diff) | |
download | cpython-5fca8a1b0d84a5e42fd572de1b22a1e2fcf46fd8.zip cpython-5fca8a1b0d84a5e42fd572de1b22a1e2fcf46fd8.tar.gz cpython-5fca8a1b0d84a5e42fd572de1b22a1e2fcf46fd8.tar.bz2 |
Adapted to new "regex" module.
Introduced egrep() and emgrep() variants.
Use '==' for equality test.
.,
Diffstat (limited to 'Lib/grep.py')
-rw-r--r-- | Lib/grep.py | 32 |
1 files changed, 22 insertions, 10 deletions
diff --git a/Lib/grep.py b/Lib/grep.py index 767498b..bfee3f5 100644 --- a/Lib/grep.py +++ b/Lib/grep.py @@ -1,24 +1,36 @@ # 'grep' -import regexp +import regex +from regex_syntax import * import string -def grep(expr, filename): - match = regexp.compile(expr).match +def grep(pat, filename): + return ggrep(RE_SYNTAX_GREP, pat, filename) + +def egrep(pat, filename): + return ggrep(RE_SYNTAX_EGREP, pat, filename) + +def emgrep(pat, filename): + return ggrep(RE_SYNTAX_EMACS, pat, filename) + +def ggrep(syntax, pat, filename): + syntax = regex.set_syntax(syntax) + try: + prog = regex.compile(pat) + finally: + syntax = regex.set_syntax(syntax) fp = open(filename, 'r') lineno = 0 while 1: line = fp.readline() if not line: break lineno = lineno + 1 - res = match(line) - if res: - #print res - start, end = res[0] - if line[-1:] = '\n': line = line[:-1] + if prog.search(line) >= 0: + if line[-1:] == '\n': line = line[:-1] prefix = string.rjust(`lineno`, 3) + ': ' print prefix + line - if 0: + if 0: # XXX + start, end = prog.regs()[0] line = line[:start] if '\t' not in line: prefix = ' ' * (len(prefix) + start) @@ -27,6 +39,6 @@ def grep(expr, filename): for c in line: if c <> '\t': c = ' ' prefix = prefix + c - if start = end: prefix = prefix + '\\' + if start == end: prefix = prefix + '\\' else: prefix = prefix + '^'*(end-start) print prefix |