Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.javascript > #18090

Re: Need regexp help

Message-ID <16779241.CEys5BfS3R@PointedEars.de> (permalink)
From Thomas 'PointedEars' Lahn <PointedEars@web.de>
Organization PointedEars Software (PES)
Date 2013-01-12 16:16 +0100
Subject Re: Need regexp help
Newsgroups comp.lang.javascript
References <eed9c2f1-0e66-4502-849d-9d538eddd1a8@googlegroups.com> <d1e1f8d6shakdd5sjro0vcudj1utmsa4q7@4ax.com> <vcr1f8ptnnqptopbi07esct071uuo38htl@4ax.com>
Followup-To comp.lang.javascript

Followups directed to: comp.lang.javascript

Show all headers | View raw


Richard Yates wrote:

> On Fri, 11 Jan 2013 17:14:16 -0800, Richard Yates
> <richard@yatesguitar.com> wrote:
>> justaguy <lichunshen84@gmail.com> wrote:
>>> How could use regexp (replace) to find all occurences of the following
                                           ^^^
>>> CSS code in a long string and remove them?   Thanks.
>>>
>>> <xmp>
>>> body { font-family : "Courier New", Courier, monospace; font-size : 9pt;
>>> valign : top; text-align : left; line-height: 9pt }
>>>
>>> td {
>>> font-family : "Courier New", Courier, monospace; font-size : 9pt; valign
>>> : top; text-align : left; line-height: 9pt } </xmp>
>>
>> Not sure why it's a regexp problem. Use indexOf() to find the location
>> of the section you want to remove, and then a couple substring() to
>> close up the gap.
> 
> var ind = haystack.indexOf(needle);
> var newstring =
> haystack.substring(0,ind)+haystack.substring(ind+needle.length);

The key word here is “all”.  Your code would replace only *one* occurrence, 
so to replace *all* occurrences you would need to run it in a loop.  We had 
to do comparably inefficient stuff like that before regular expressions were 
introduced in ECMAScript Edition 3.  That was a little more than 13 years 
ago (1999-12).  (But even then we used String.prototype.replace() already.)

That said, one should not use regular expressions on a context-free language 
unless one really knows what one is doing.  In this exceptional case a 
*single* regular expression would be appropriate to parse CSS because the 
probability of a false positive for pattern matching can be reduced to close 
to zero.  Watch for word-wrap (or instead use RegExp.prototype.concat(), 
provided by jsx.regexp.concat() [1]):

  css = css.replace(/(^|\s*)body\s*\{\s*font-family\s*:\s*"Courier New",
\s*Courier,\s*monospace;\s*font-size\s*:\s*9pt;\s*valign\s*:\s*top;\s*text-
align\s*:\s*left;\s*line-height:\s*9pt\s*\}\s*td\s*\{\s*font-family\s*:
\s*"Courier New",\s*Courier,\s*monospace;\s*font-size\s*:\s*9pt;
\s*valign\s*:\s*top;text-align\s*:\s*left;\s*line-height:\s*9pt\s*\}/g, 
"$1");

This begs the question, however, why the OP thinks this would be necessary 
here in the first place.  I certainly would not recommend it.

BTW, the code to remove is not Valid (there is no “valign” CSS property to 
begin with; the property name is “vertical-align” [2]).  But that could be 
one reason why it is to be removed.

_________
[1] <http://PointedEars.de/scripts/test/regexp>
[2] <http://www.w3.org/TR/CSS21/>
-- 
PointedEars

Twitter: @PointedEars2
Please do not Cc: me. / Bitte keine Kopien per E-Mail.

Back to comp.lang.javascript | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Need regexp help justaguy <lichunshen84@gmail.com> - 2013-01-11 17:01 -0800
  Re: Need regexp help Richard Yates <richard@yatesguitar.com> - 2013-01-11 17:14 -0800
    Re: Need regexp help Richard Yates <richard@yatesguitar.com> - 2013-01-11 21:00 -0800
      Re: Need regexp help Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2013-01-12 16:16 +0100
        Re: Need regexp help "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2013-01-12 16:27 +0100
        Re: Need regexp help Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2013-01-13 00:49 +0100
  Re: Need regexp help Luc Yen <luc@goal.tw> - 2013-01-11 22:10 -0800
  Re: Need regexp help "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2013-01-12 09:25 +0100
    Re: Need regexp help justaguy <lichunshen84@gmail.com> - 2013-01-12 06:33 -0800
  Re: Need regexp help justaguy <lichunshen84@gmail.com> - 2013-01-12 10:22 -0800
    Re: Need regexp help justaguy <lichunshen84@gmail.com> - 2013-01-12 10:48 -0800
      Re: Need regexp help SAM <stephanemoriaux.NoAdmin@wanadoo.fr.invalid> - 2013-01-13 22:02 +0100
    Re: Need regexp help "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2013-01-12 23:11 +0100

csiph-web