summaryrefslogtreecommitdiffstats
path: root/Lib/grep.py
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1991-12-31 00:00:35 (GMT)
committerGuido van Rossum <guido@python.org>1991-12-31 00:00:35 (GMT)
commit5fca8a1b0d84a5e42fd572de1b22a1e2fcf46fd8 (patch)
tree11914444af0199f67c2ce0bf23d62d5a34c93746 /Lib/grep.py
parent9f39fbb5b7b2e5066c770a784294f6be70e6439a (diff)
downloadcpython-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.py32
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