[Proto-Scripty] Re: help with basic regular expression

2009-03-16 Thread arkady

thank you. that worked. i was trying to use the sub() method. does it
work?

On Mar 16, 11:10 am, kangax kan...@gmail.com wrote:
 On Mar 16, 1:13 pm, arkady arkad...@gmail.com wrote:

  if trying to strip off the everything before the body and everything
  after /body

 response.replace(/.*(?=body)/, '').replace(/(\/body).*/, '$1');

 [...]

 --
 kangax
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
Prototype  script.aculo.us group.
To post to this group, send email to prototype-scriptaculous@googlegroups.com
To unsubscribe from this group, send email to 
prototype-scriptaculous+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en
-~--~~~~--~~--~--~---



[Proto-Scripty] Re: help with basic regular expression

2009-03-16 Thread RobG



On Mar 17, 4:10 am, kangax kan...@gmail.com wrote:
 On Mar 16, 1:13 pm, arkady arkad...@gmail.com wrote:

  if trying to strip off the everything before the body and everything
  after /body

 response.replace(/.*(?=body)/, '').replace(/(\/body).*/, '$1');

That seems a bit risky, the string may not always have lower case tag
names and the body opening tag may include attributes.  New lines in
the string might trip it up too.  In any case, it doesn't work for me
at all in Firefox 3 or IE 6.

An alternative, provided all new lines are removed, is:

  response.match(/body.*body/i)[0];

or

  response.replace(/\s/g,' ').match(/\body.+body\/i)[0];


A sub-string version is:

  var start = response.toLowerCase().indexOf('body');
  var end = response.toLowerCase().indexOf('/body') + 7;
  var theBody = response.substring(start, end)


--
Rob
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
Prototype  script.aculo.us group.
To post to this group, send email to prototype-scriptaculous@googlegroups.com
To unsubscribe from this group, send email to 
prototype-scriptaculous+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en
-~--~~~~--~~--~--~---



[Proto-Scripty] Re: help with basic regular expression

2009-03-16 Thread kangax

On Mar 16, 9:44 pm, RobG rg...@iinet.net.au wrote:
 On Mar 17, 4:10 am, kangax kan...@gmail.com wrote:

  On Mar 16, 1:13 pm, arkady arkad...@gmail.com wrote:

   if trying to strip off the everything before the body and everything
   after /body

  response.replace(/.*(?=body)/, '').replace(/(\/body).*/, '$1');

 That seems a bit risky, the string may not always have lower case tag
 names and the body opening tag may include attributes.  New lines in

I actually took OP's issue too literally; i.e. - strip off everything
before the body and after /body : )

 the string might trip it up too.  In any case, it doesn't work for me
 at all in Firefox 3 or IE 6.

Which string did you feed it with? dot doesn't match newlines, does
it? [\s\S] should match:

response.replace(/[\s\S]*(?=body)/i, '');


 An alternative, provided all new lines are removed, is:

   response.match(/body.*body/i)[0];

 or

   response.replace(/\s/g,' ').match(/\body.+body\/i)[0];

 A sub-string version is:

   var start = response.toLowerCase().indexOf('body');
   var end = response.toLowerCase().indexOf('/body') + 7;
   var theBody = response.substring(start, end)

Obviously, string-based matching should be marginally faster than
regex, especially when that regex is based on a relatively slow
positive lookahead : )

var response = document.documentElement.innerHTML;
console.time(1);
for (var i=0; i100; i++) {
  var l = response.toLowerCase();
  response.substring(l.indexOf('body'), l.indexOf('/body') + 7);
}
console.timeEnd(1);

var response = document.documentElement.innerHTML;
console.time(2);
for (var i=0; i100; i++) {
  response.replace(/[\s\S]*(?=body)/i, '')
.replace(/(\/body)[\s\S]*/i, '$1');
}
console.timeEnd(2);

//1: 186ms
//2: 2664ms

--
kangax
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
Prototype  script.aculo.us group.
To post to this group, send email to prototype-scriptaculous@googlegroups.com
To unsubscribe from this group, send email to 
prototype-scriptaculous+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en
-~--~~~~--~~--~--~---