Mercurial > hg > octave-lyh
changeset 7629:cc31c5002c96
Add the regexptranslate function
author | David Bateman <dbateman@free.fr> |
---|---|
date | Mon, 24 Mar 2008 15:55:40 -0400 |
parents | acca752a3b96 |
children | 70ae882c63cd |
files | scripts/ChangeLog scripts/strings/Makefile.in scripts/strings/regexptranslate.m |
diffstat | 3 files changed, 51 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/scripts/ChangeLog +++ b/scripts/ChangeLog @@ -4,6 +4,8 @@ * miscellaneous/namelengthmax.m: New function. + * strings/regexptranslate.m: New function. + 2008-03-21 David Bateman <dbateman@free.fr> * specfun/reallog.m, specfun/realpow.m, specfun/realsqrt.m: New
--- a/scripts/strings/Makefile.in +++ b/scripts/strings/Makefile.in @@ -35,7 +35,7 @@ SOURCES = base2dec.m bin2dec.m blanks.m deblank.m dec2base.m \ dec2bin.m dec2hex.m findstr.m hex2dec.m index.m isletter.m \ - lower.m mat2str.m rindex.m split.m str2double.m str2mat.m \ + lower.m mat2str.m regexptranslate.m rindex.m split.m str2double.m str2mat.m \ str2num.m strcat.m cstrcat.m strcmpi.m strfind.m strjust.m strmatch.m \ strncmpi.m strrep.m strtok.m strtrim.m strtrunc.m strvcat.m \ substr.m upper.m
new file mode 100644 --- /dev/null +++ b/scripts/strings/regexptranslate.m @@ -0,0 +1,48 @@ +## Copyright (C) 2008 David Bateman +## +## This file is part of Octave. +## +## Octave is free software; you can redistribute it and/or modify it +## under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 3 of the License, or (at +## your option) any later version. +## +## Octave is distributed in the hope that it will be useful, but +## WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with Octave; see the file COPYING. If not, see +## <http://www.gnu.org/licenses/>. + +## -*- texinfo -*- +## @deftypefn {Function File} {} realsqrt (@var{x}) +## Return the real natural logarithm of @var{x}. If any element results in the +## return value being complex @code{reallog} produces an error. +## @seealso{log, realsqrt, realpow} +## @end deftypefn + +function y = regexptranslate (op, x) + + if (ischar (op)) + op = tolower (op); + if (strcmp ("wildcard", op)) + y = regexprep (regexprep (regexprep (x, "\\.", "\\."), "\\*", + ".*"), "\\?", "."); + elseif (strcmp ("escape", op)) + ch = {'\$', '\.', '\?', '\[', '\]'}; + y = x; + for i = 1 : length (ch) + y = regexprep (y, ch{i}, ch{i}); + endfor + else + error ("regexptranslate: unexpected operation"); + endif + else + error ("regexptranslate: expecting operation to be a string"); + endif +endfunction + +%!assert (regexptranslate ("wildcard", "/a*b?c."), "/a.*b.c\\.") +%!assert (regexptranslate ("escape", '$.?[]'), '\$\.\?\[\]')