diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2014-01-26 23:42:20 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2014-01-26 23:42:20 -0800 |
commit | c150e646fa90409c412f07f59edbb897bdbb4997 (patch) | |
tree | b4c4cfb5a2a95d57f7049e97574bbcec8b3b70f5 /regex.c | |
parent | eee670172cca986245006e1c9a4f32f7d0b60895 (diff) | |
download | txr-c150e646fa90409c412f07f59edbb897bdbb4997.tar.gz txr-c150e646fa90409c412f07f59edbb897bdbb4997.tar.bz2 txr-c150e646fa90409c412f07f59edbb897bdbb4997.zip |
* regex.c (match_regex_right): New function.
* regex.h (match_regex_right): Declared.
* eval.c (eval_init): Register match_regex_right as instrinsic.
Diffstat (limited to 'regex.c')
-rw-r--r-- | regex.c | 20 |
1 files changed, 20 insertions, 0 deletions
@@ -1854,6 +1854,26 @@ val match_regex(val str, val reg, val pos) return nil; } +val match_regex_right(val str, val regex, val pos) +{ + val slen = length(str); + + if (!pos) + pos = zero; + + for (;;) { + cons_bind (from, len, search_regex(str, regex, pos, nil)); + + if (!from) + return nil; + + if (eql(plus(from, len), slen)) + return len; + + pos = plus(pos, one); + } +} + val regsub(val regex, val repl, val str) { list_collect_decl (out, ptail); |