mirror of
https://github.com/python/cpython
synced 2024-10-18 19:23:19 +00:00
Adapted to new "regex" module.
Introduced egrep() and emgrep() variants. Use '==' for equality test. .,
This commit is contained in:
parent
9f39fbb5b7
commit
5fca8a1b0d
32
Lib/grep.py
32
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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue