Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.javascript > #18090
| 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
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
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