[Jprogramming] Regex vs I./E. for pattern matching
Raul Miller
rauldmiller at gmail.com
Sun Aug 16 10:37:49 UTC 2015
Yes?
E. is faster than rxmatches precisely because it is less powerful.
And note that you could also use ;: (but the trace operation is 5x
larger than you need and most people don't like making state
machines).
--
Raul
On Sun, Aug 16, 2015 at 2:09 AM, Jon Hough <jghough at outlook.com> wrote:
> I recently went through the regex lab, and would like to know whether it is more idiomatic for J users to use regex when matching simple patterns in a string, or to use E. and similar verbs?
> For example. If I have an (imaginary) DNA sequence string:
> DNA=: 'CGATTGACTAGTCGATTGCTGATGCTCTAGTCGTGATGCTATACTAGTGCGTCGATGCTAGCGCTAGTCGCATTTGA'
> I want to find where 'CTAG' sequences exist in this string. Using regex,
> 'CTAG' rxmatches DNA
> will give the 5 indices where the CTAG pattern is found.
> But I could equally do,
> I. 'CTAG' E. DNA
> which will give me the same indices. And it seems the non-regex way is more efficient (in time and space):
>
> timespacex '( I. ''CTAG'' E. DNA)'
>
>
> gives 1.5e_5 3008
>
>
>
>
> timespacex '( ''CTAG'' rxmatches DNA)'
>
>
> gives 0.001103 6720
>
>
> Granted, the regex expression is as simple as possible. and regex can do more complicated matching than E. can do, and possibly rxmatches gains efficiency over E. for very longer DNA strings. But it seems for simple matches E. is the better choice.
>
>
>
>
>
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
More information about the Programming
mailing list