interactive regular expression
TRANSCRIPT
Interactive Regular Expression
Jonathan Feinberg
Dept. of Informatics, Univ. of Oslo
Simula Research Laboratory
August 2014
Interactive search and replace
Editing a file often require changing out old text.
Certain tasks are fully or partially repetative in structure.
In large documents, making such changes is time costly (andboring).
Interactive regular expression through your text editor can saveyou allot of time if used correctly.
Interactive Regular Expression – p.1
Demonstration: Matlab to Python converssion
function y = test(b,a,x)[nt,nx] = size(x);y = zeros(nt,nx);for k=1:nx
y(k,:) = flipud(trending(b, a, x(k,:))));end
end
function y = trending(b,a,x)[np,ns] = size(x);y = zeros(np,1);ord = length(b);for i=1:np
y(i) = b(1)*x(i);for j = 1:(min(ord,i)-1)
y(i) = y(i) + b(j+1) * x(i - j)end
endend
Interactive Regular Expression – p.2
end
function y = test(b,a,x)[nt,nx] = size(x);y = zeros(nt,nx);for k=1:nx
y(k,:) = flipud(tr end ing(b, a, x(k,:))));
end
end
function y = tr end ing(b,a,x)[np,ns] = size(x);y = zeros(np,1);ord = length(b);for i=1:np
y(i) = b(1)*x(i);for j = 1:(min(ord,i)-1)
y(i) = y(i) + b(j+1) * x(i - j)
end
end
end Interactive Regular Expression – p.3
* end\n
function y = test(b,a,x)[nt,nx] = size(x);y = zeros(nt,nx);for k=1:nx
y(k,:) = flipud(trending(b, a, x(k,:))));
end
end
function y = trending(b,a,x)[np,ns] = size(x);y = zeros(np,1);ord = length(b);for i=1:np
y(i) = b(1)*x(i);for j = 1:(min(ord,i)-1)
y(i) = y(i) + b(j+1) * x(i - j)
end
end
endInteractive Regular Expression – p.4
s/ * end\n/
function y = test(b,a,x)[nt,nx] = size(x);y = zeros(nt,nx);for k=1:nx
y(k,:) = flipud(trending(b, a, x(k,:))));
end
end
function y = trending(b,a,x)[np,ns] = size(x);y = zeros(np,1);ord = length(b);for i=1:np
y(i) = b(1)*x(i);for j = 1:(min(ord,i)-1)
y(i) = y(i) + b(j+1) * x(i - j)
end
end
endInteractive Regular Expression – p.5
s/ * end\n/
function y = test(b,a,x)[nt,nx] = size(x);y = zeros(nt,nx);for k=1:nx
y(k,:) = flipud(trending(b, a, x(k,:))));
function y = trending(b,a,x)[np,ns] = size(x);y = zeros(np,1);ord = length(b);for i=1:np
y(i) = b(1)*x(i);for j = 1:(min(ord,i)-1)
y(i) = y(i) + b(j+1) * x(i - j)
Interactive Regular Expression – p.6
\[. * \]
function y = test(b,a,x)[nt,nx] = size(x);y = zeros(nt,nx);for k=1:nx
y(k,:) = flipud(trending(b, a, x(k,:))));
function y = trending(b,a,x)[np,ns] = size(x);y = zeros(np,1);ord = length(b);for i=1:np
y(i) = b(1)*x(i);for j = 1:(min(ord,i)-1)
y(i) = y(i) + b(j+1) * x(i - j)
Interactive Regular Expression – p.7
\[. * \]
function y = test(b,a,x)
[nt,nx] = size(x);
y = zeros(nt,nx);
for k=1:nx
y(k,:) = flipud(trending(b, a, x(k,:))));
function y = trending(b,a,x)
[np,ns] = size(x);
y = zeros(np,1);ord = length(b);for i=1:np
y(i) = b(1)*x(i);for j = 1:(min(ord,i)-1)
y(i) = y(i) + b(j+1) * x(i - j)
Interactive Regular Expression – p.8
\[. * ?\]
function y = test(b,a,x)
[nt,nx] = size(x);
y = zeros(nt,nx);for k=1:nx
y(k,:) = flipud(trending(b, a, x(k,:))));
function y = trending(b,a,x)
[np,ns] = size(x);
y = zeros(np,1);ord = length(b);for i=1:np
y(i) = b(1)*x(i);for j = 1:(min(ord,i)-1)
y(i) = y(i) + b(j+1) * x(i - j)
Interactive Regular Expression – p.9
\[(. * ?)\]
function y = test(b,a,x)
[ nt,nx ] = size(x);
y = zeros(nt,nx);for k=1:nx
y(k,:) = flipud(trending(b, a, x(k,:))));
function y = trending(b,a,x)
[ np,ns ] = size(x);
y = zeros(np,1);ord = length(b);for i=1:np
y(i) = b(1)*x(i);for j = 1:(min(ord,i)-1)
y(i) = y(i) + b(j+1) * x(i - j)
Interactive Regular Expression – p.10
s/\[(. * ?)\]/\1
function y = test(b,a,x)
[ nt,nx ] = size(x);
y = zeros(nt,nx);for k=1:nx
y(k,:) = flipud(trending(b, a, x(k,:))));
function y = trending(b,a,x)
[ np,ns ] = size(x);
y = zeros(np,1);ord = length(b);for i=1:np
y(i) = b(1)*x(i);for j = 1:(min(ord,i)-1)
y(i) = y(i) + b(j+1) * x(i - j)
Interactive Regular Expression – p.11
s/\[(. * ?)\]/\1
function y = test(b,a,x)
nt,nx = size(x);
y = zeros(nt,nx);for k=1:nx
y(k,:) = flipud(trending(b, a, x(k,:))));
function y = trending(b,a,x)np,ns = size(x);
y = zeros(np,1);ord = length(b);for i=1:np
y(i) = b(1)*x(i);for j = 1:(min(ord,i)-1)
y(i) = y(i) + b(j+1) * x(i - j)
Interactive Regular Expression – p.12
\w+\(. * ?\)
function y = test(b,a,x)nt,nx = size(x);y = zeros(nt,nx);for k=1:nx
y(k,:) = flipud(trending(b, a, x(k,:))));
function y = trending(b,a,x)np,ns = size(x);y = zeros(np,1);ord = length(b);for i=1:np
y(i) = b(1)*x(i);for j = 1:(min(ord,i)-1)
y(i) = y(i) + b(j+1) * x(i - j)
Interactive Regular Expression – p.13
\w+\(. * ?\)
function y = test(b,a,x)
nt,nx = size(x) ;
y = zeros(nt,nx) ;
for k=1:nxy(k,:) = flipud(trending(b, a, x(k,:) )));
function y = trending(b,a,x)
np,ns = size(x) ;
y = zeros(np,1) ;
ord = length(b) ;
for i=1:np
y(i) = b(1) * x(i) ;
for j = 1:( min(ord,i) -1)
y(i) = y(i) + b(j+1) * x(i - j)
Interactive Regular Expression – p.14
(a|b|x|y)\(. * ?\)
function y = test(b,a,x)nt,nx = size(x);y = zeros(nt,nx);for k=1:nx
y (k,:) = flipud(trending(b, a, x (k,:) )));
function y = trending(b,a,x)np,ns = size(x);y = zeros(np,1);ord = length(b);for i=1:np
y (i) = b (1) * x (i) ;
for j = 1:(min(ord,i)-1)
y (i) = y (i) + b (j+1) * x (i - j)
Interactive Regular Expression – p.15
(a|b|x|y)\([ˆ,)] * \)
function y = test(b,a,x)nt,nx = size(x);y = zeros(nt,nx);for k=1:nx
y(k,:) = flipud(trending(b, a, x(k,:))));
function y = trending(b,a,x)np,ns = size(x);y = zeros(np,1);ord = length(b);for i=1:np
y (i) = b (1) * x (i) ;
for j = 1:(min(ord,i)-1)
y (i) = y (i) + b (j+1) * x (i - j)
Interactive Regular Expression – p.16
(a|b|x|y)\(([ˆ,)] * )\)
function y = test(b,a,x)nt,nx = size(x);y = zeros(nt,nx);for k=1:nx
y(k,:) = flipud(trending(b, a, x(k,:))));
function y = trending(b,a,x)np,ns = size(x);y = zeros(np,1);ord = length(b);for i=1:np
y ( i ) = b ( 1 ) * x ( i ) ;
for j = 1:(min(ord,i)-1)
y ( i ) = y ( i ) + b ( j+1 ) * x ( i - j )
Interactive Regular Expression – p.17
s/(a|b|x|y)\(([ˆ,)] * )\)/\1[\2-1]
function y = test(b,a,x)nt,nx = size(x);y = zeros(nt,nx);for k=1:nx
y(k,:) = flipud(trending(b, a, x(k,:))));
function y = trending(b,a,x)np,ns = size(x);y = zeros(np,1);ord = length(b);for i=1:np
y ( i ) = b ( 1 ) * x ( i ) ;
for j = 1:(min(ord,i)-1)
y ( i ) = y ( i ) + b ( j+1 ) * x ( i - j )
Interactive Regular Expression – p.18
s/(a|b|x|y)\(([ˆ,)] * )\)/\1[\2-1]
function y = test(b,a,x)nt,nx = size(x);y = zeros(nt,nx);for k=1:nx
y(k,:) = flipud(trending(b, a, x(k,:))));
function y = trending(b,a,x)np,ns = size(x);y = zeros(np,1);ord = length(b);for i=1:np
y[i-1] = b[1-1] * x[i-1] ;
for j = 1:(min(ord,i)-1)
y[i-1] = y[i-1] + b[j+1-1] * x[i - j-1]
Interactive Regular Expression – p.19
(x|y)\(k,:\)
function y = test(b,a,x)nt,nx = size(x);y = zeros(nt,nx);for k=1:nx
y(k,:) = flipud(trending(b, a, x(k,:))));
function y = trending(b,a,x)np,ns = size(x);y = zeros(np,1);ord = length(b);for i=1:np
y[i-1] = b[1-1]*x[i-1];for j = 1:(min(ord,i)-1)
y[i-1] = y[i-1] + b[j+1-1] * x[i - j-1]
Interactive Regular Expression – p.20
(x|y)\(k,:\)
function y = test(b,a,x)nt,nx = size(x);y = zeros(nt,nx);for k=1:nx
y (k,:) = flipud(trending(b, a, x (k,:) )));
function y = trending(b,a,x)np,ns = size(x);y = zeros(np,1);ord = length(b);for i=1:np
y[i-1] = b[1-1]*x[i-1];for j = 1:(min(ord,i)-1)
y[i-1] = y[i-1] + b[j+1-1] * x[i - j-1]
Interactive Regular Expression – p.21
s/(x|y)\(k,:\)/\1[k-1,:]
function y = test(b,a,x)nt,nx = size(x);y = zeros(nt,nx);for k=1:nx
y (k,:) = flipud(trending(b, a, x (k,:) )));
function y = trending(b,a,x)np,ns = size(x);y = zeros(np,1);ord = length(b);for i=1:np
y[i-1] = b[1-1]*x[i-1];for j = 1:(min(ord,i)-1)
y[i-1] = y[i-1] + b[j+1-1] * x[i - j-1]
Interactive Regular Expression – p.22
s/(x|y)\(k,:\)/\1[k-1,:]
function y = test(b,a,x)nt,nx = size(x);y = zeros(nt,nx);for k=1:nx
y[k-1,:] = flipud(trending(b, a, x[k-1,:] )));
function y = trending(b,a,x)np,ns = size(x);y = zeros(np,1);ord = length(b);for i=1:np
y[i-1] = b[1-1]*x[i-1];for j = 1:(min(ord,i)-1)
y[i-1] = y[i-1] + b[j+1-1] * x[i - j-1]
Interactive Regular Expression – p.23
for .=.:..
function y = test(b,a,x)nt,nx = size(x);y = zeros(nt,nx);for k=1:nx
y[k-1,:] = flipud(trending(b, a, x[k-1,:])));
function y = trending(b,a,x)np,ns = size(x);y = zeros(np,1);ord = length(b);for i=1:np
y[i-1] = b[1-1]*x[i-1];for j = 1:(min(ord,i)-1)
y[i-1] = y[i-1] + b[j+1-1] * x[i - j-1]
Interactive Regular Expression – p.24
for .=.:..
function y = test(b,a,x)nt,nx = size(x);y = zeros(nt,nx);
for k=1:nxy[k-1,:] = flipud(trending(b, a, x[k-1,:])));
function y = trending(b,a,x)np,ns = size(x);y = zeros(np,1);ord = length(b);
for i=1:np
y[i-1] = b[1-1]*x[i-1];for j = 1:(min(ord,i)-1)
y[i-1] = y[i-1] + b[j+1-1] * x[i - j-1]
Interactive Regular Expression – p.25
for (.) ?= ?(.):(.+)
function y = test(b,a,x)nt,nx = size(x);y = zeros(nt,nx);
for k = 1 : nxy[k-1,:] = flipud(trending(b, a, x[k-1,:])));
function y = trending(b,a,x)np,ns = size(x);y = zeros(np,1);ord = length(b);
for i = 1 : np
y[i-1] = b[1-1]*x[i-1];
for j = 1 : (min(ord,i)-1)
y[i-1] = y[i-1] + b[j+1-1] * x[i - j-1]
Interactive Regular Expression – p.26
s/for (.) ?= ?(.):(.+)/
for \1 in xrange(\2, \3):
function y = test(b,a,x)nt,nx = size(x);y = zeros(nt,nx);
for k = 1 : nxy[k-1,:] = flipud(trending(b, a, x[k-1,:])));
function y = trending(b,a,x)np,ns = size(x);y = zeros(np,1);ord = length(b);
for i = 1 : np
y[i-1] = b[1-1]*x[i-1];
for j = 1 : (min(ord,i)-1)
y[i-1] = y[i-1] + b[j+1-1] * x[i - j-1]
Interactive Regular Expression – p.27
s/for (.) ?= ?(.):(.+)/
for \1 in xrange(\2, \3):
function y = test(b,a,x)nt,nx = size(x);y = zeros(nt,nx);
for k in xrange(1, nx):
y[k-1,:] = flipud(trending(b, a, x[k-1,:])));
function y = trending(b,a,x)np,ns = size(x);y = zeros(np,1);ord = length(b);
for i in xrange(1, np):
y[i-1] = b[1-1]*x[i-1];
for j in xrange(1, min(ord,i)-1)):
y[i-1] = y[i-1] + b[j+1-1] * x[i - j-1]
Interactive Regular Expression – p.28
s/for (.) ?= ?(.):(.+)/
for \1 in xrange(\2, \3):
function y = test(b,a,x)nt,nx = size(x);y = zeros(nt,nx);for k in xrange(1, nx):
y[k-1,:] = flipud(trending(b, a, x[k-1,:])));
function y = trending(b,a,x)np,ns = size(x);y = zeros(np,1);ord = length(b);for i in xrange(1, np):
y[i-1] = b[1-1]*x[i-1];for j in xrange(1, min(ord,i)-1)):
y[i-1] = y[i-1] + b[j+1-1] * x[i - j-1]
Interactive Regular Expression – p.29
function \w+ = \w+\([ˆ)]+\)
function y = test(b,a,x)
nt,nx = size(x);y = zeros(nt,nx);for k in xrange(1, nx):
y[k-1,:] = flipud(trending(b, a, x[k-1,:])));
function y = trending(b,a,x)
np,ns = size(x);y = zeros(np,1);ord = length(b);for i in xrange(1, np):
y[i-1] = b[1-1]*x[i-1];for j in xrange(1, (min(ord,i)-1)):
y[i-1] = y[i-1] + b[j+1-1] * x[i - j-1]
Interactive Regular Expression – p.30
function (\w+) = ((\n|.) * ?)function
function y = test(b,a,x)
nt,nx = size(x);
y = zeros(nt,nx);
for k in xrange(1, nx):
y[k-1,:] = flipud(trending(b, a, x[k-1,:])));
function y = trending(b,a,x)np,ns = size(x);y = zeros(np,1);ord = length(b);for i in xrange(1, np):
y[i-1] = b[1-1]*x[i-1];for j in xrange(1, (min(ord,i)-1)):
y[i-1] = y[i-1] + b[j+1-1] * x[i - j-1]
Interactive Regular Expression – p.31
s/\nfunction/#\0
function y = test(b,a,x)nt,nx = size(x);y = zeros(nt,nx);for k in xrange(1, nx):
y[k-1,:] = flipud(trending(b, a, x[k-1,:])));
function y = trending(b,a,x)np,ns = size(x);y = zeros(np,1);ord = length(b);for i in xrange(1, np):
y[i-1] = b[1-1]*x[i-1];for j in xrange(1, (min(ord,i)-1)):
y[i-1] = y[i-1] + b[j+1-1] * x[i - j-1]
Interactive Regular Expression – p.32
s/\nfunction/#\0
#
function y = test(b,a,x)nt,nx = size(x);y = zeros(nt,nx);for k in xrange(1, nx):
y[k-1,:] = flipud(trending(b, a, x[k-1,:])));
#
function y = trending(b,a,x)np,ns = size(x);y = zeros(np,1);ord = length(b);for i in xrange(1, np):
y[i-1] = b[1-1]*x[i-1];for j in xrange(1, (min(ord,i)-1)):
y[i-1] = y[i-1] + b[j+1-1] * x[i - j-1]
Interactive Regular Expression – p.33
function (\w+) = (. * )(([ˆ#]|\n) * )#?
#function y = test(b,a,x)
nt,nx = size(x);y = zeros(nt,nx);for k in xrange(1, nx):
y[k-1,:] = flipud(trending(b, a, x[k-1,:])));#function y = trending(b,a,x)
np,ns = size(x);y = zeros(np,1);ord = length(b);for i in xrange(1, np):
y[i-1] = b[1-1]*x[i-1];for j in xrange(1, (min(ord,i)-1)):
y[i-1] = y[i-1] + b[j+1-1] * x[i - j-1]
Interactive Regular Expression – p.34
function (\w+) = (. * )(([ˆ#]|\n) * )#?
#function y = test(b,a,x):
nt,nx = size(x);y = zeros(nt,nx);for k in xrange(1, nx):
y[k-1,:] = flipud(trending(b, a, x[k-1,:])));#def y = trending(b,a,x):
np,ns = size(x);y = zeros(np,1);ord = length(b);for i in xrange(1, np):
y[i-1] = b[1-1]*x[i-1];for j in xrange(1, (min(ord,i)-1)):
y[i-1] = y[i-1] + b[j+1-1] * x[i - j-1]
Interactive Regular Expression – p.35
s/function (\w+) = (. * )(([ˆ#]|\n) * )#?/
def \2:\3 \n return \1#function y = test(b,a,x):
nt,nx = size(x);y = zeros(nt,nx);for k in xrange(1, nx):
y[k-1,:] = flipud(trending(b, a, x[k-1,:])));#def y = trending(b,a,x):
np,ns = size(x);y = zeros(np,1);ord = length(b);for i in xrange(1, np):
y[i-1] = b[1-1]*x[i-1];for j in xrange(1, (min(ord,i)-1)):
y[i-1] = y[i-1] + b[j+1-1] * x[i - j-1]
Interactive Regular Expression – p.36
s/function (\+) = (. * )(([ˆ#]|\n) * )#?/
def \2:\3 \n return \1#def test(b,a,x):
nt,nx = size(x);y = zeros(nt,nx);for k in xrange(1, nx):
y[k-1,:] = flipud(trending(b, a, x[k-1,:])));
return y
def trending(b,a,x):
np,ns = size(x);y = zeros(np,1);ord = length(b);for i in xrange(1, np):
y[i-1] = b[1-1]*x[i-1];for j in xrange(1, (min(ord,i)-1)):
y[i-1] = y[i-1] + b[j+1-1] * x[i - j-1]
return y
Interactive Regular Expression – p.37
Completed Script
def test(b,a,x):nt,nx = size(x);y = zeros(nt,nx);for k in xrange(1, nx):
y[k-1,:] = flipud(trending(b, a, x[k-1,:])));return y
def trending(b,a,x):np,ns = size(x);y = zeros(np,1);ord = length(b);for i in xrange(1, np):
y[i-1] = b[1-1]*x[i-1];for j in xrange(1, (min(ord,i)-1)):
y[i-1] = y[i-1] + b[j+1-1] * x[i - j-1]return y
Interactive Regular Expression – p.38