# Removing Whitespace using regexp

**URL:** <https://www.ruby-forum.com/t/removing-whitespace-using-regexp/167266>\
**Category:** Ruby\
**Created:** [May 6, 2009, 7:54am UTC](https://www.ruby-forum.com/t/removing-whitespace-using-regexp/167266 "2009-05-06T07:54:42Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![arunvoip](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/e8c25b/32.png) [@arunvoip](https://www.ruby-forum.com/u/arunvoip)\
**Post date:** [May 6, 2009, 7:54am UTC](https://www.ruby-forum.com/t/removing-whitespace-using-regexp/167266/1 "2009-05-06T07:54:42Z")

</div>

Hi,  
Previously I posted a topic on how to strip all html tags and getting  
the remaining text using regexp. Luckily I got one. This is the regexp:

/([^\>]_)(?=\<[^\>]_?\>)/im

In this case I’m able to get all the data between the html tags. But one  
small problem. I’m getting output like this :

Example Web Page

You have reached this web page by typing "example.com",  
"example.net",  
or "example.org" into your web browser.  
These domain names are reserved for use in documentation and are not  
available  
for registration. See RFC  
2606, Section 3.

This is the output which I get when I parse the html content of  
[example.com](http://example.com) using the above regexp. Here you can see some white space  
between the data(ie. between ‘Example web page’ and ‘You have  
reached…’. These whitespaces are generated in place of the html tags  
which I avoided using the above regexp. I want to remove those  
whitespaces. I think that modifying the above regexp will give me the  
right output without white spaces. Can somebody please help me.

Thanks  
Arun

---

<div class="post-metadata">

**Author:** ![arunvoip](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/e8c25b/32.png) [@arunvoip](https://www.ruby-forum.com/u/arunvoip)\
**Post date:** [May 6, 2009, 9:05am UTC](https://www.ruby-forum.com/t/removing-whitespace-using-regexp/167266/2 "2009-05-06T09:05:28Z")

</div>

- Arun K. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) (07:54) schrieb:

> Hi,  
> Previously I posted a topic on how to strip all html tags and getting  
> the remaining text using regexp. Luckily I got one. This is the regexp:
> 
> /([^\>]_)(?=\<[^\>]_?\>)/im

And what do you do with this regexp?

> In this case I’m able to get all the data between the html tags. But one  
> small problem.

Hasn’t everybody told you, there are problems with parsing HTML with  
regexps?

> This is the output which I get when I parse the html content of  
> [example.com](http://example.com) using the above regexp. Here you can see some white space  
> between the data(ie. between ‘Example web page’ and ‘You have  
> reached…’. These whitespaces are generated in place of the html tags  
> which I avoided using the above regexp.

Really? Aren’t they just from all the meaningless whitespace that’s in  
a typical HTML document?

> I want to remove those  
> whitespaces. I think that modifying the above regexp will give me the  
> right output without white spaces. Can somebody please help me.

There are easy ways to strip all the whitespace, which is certainly not  
what you want, and there is a simple way to reduce all runs of  
whitespace  
by just one space (gsub(/\s+/, ’ '), which probably also not what you  
want.

Selectively removing some of the whitespace isn’t easy at all, but it is  
probably a lot easier with a real HTML parser.

mfg, simon … l

---

<div class="post-metadata">

**Author:** ![arunvoip](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/e8c25b/32.png) [@arunvoip](https://www.ruby-forum.com/u/arunvoip)\
**Post date:** [May 6, 2009, 9:06am UTC](https://www.ruby-forum.com/t/removing-whitespace-using-regexp/167266/3 "2009-05-06T09:06:11Z")

</div>

Hey Arun,

How about doing a gsub on the output to remove white spaces.

For example:

“Example Web Page”.gsub(" “,”")

This would remove the white spaces.

Hope this helps.

Regards  
Sriram.

---

<div class="post-metadata">

**Author:** ![arunvoip](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/e8c25b/32.png) [@arunvoip](https://www.ruby-forum.com/u/arunvoip)\
**Post date:** [May 6, 2009, 12:19pm UTC](https://www.ruby-forum.com/t/removing-whitespace-using-regexp/167266/4 "2009-05-06T12:19:01Z")

</div>

I know your boss and whoever it is who is dangling your carrots won’t  
let  
you use Hpricot, but tell him you will use Hpricot to get properly  
formatted  
html and then write a parser to parse the properly formatted html. Even  
he  
can’t be opposed to that(seeing as how he wants you to reinvent wheels).  
That way you can get rid of your whitespace problem and deal with the  
cosmos  
at large.

Jayanth

---

<div class="post-metadata">

**Author:** ![arunvoip](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/e8c25b/32.png) [@arunvoip](https://www.ruby-forum.com/u/arunvoip)\
**Post date:** [May 6, 2009, 1:02pm UTC](https://www.ruby-forum.com/t/removing-whitespace-using-regexp/167266/5 "2009-05-06T13:02:27Z")

</div>

2009/5/6 Sriram V. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> How about doing a gsub on the output to remove white spaces.
> 
> For example:
> 
> “Example Web Page”.gsub(" “,”")
> 
> This would remove the white spaces.

I would rather do

s.gsub /\s+/, ’ ’

Because your statement removes _all_ whitespace:

irb(main):002:0\> “Example Web Page”.gsub(" “,”")  
=\> “ExampleWebPage”

This is usually not what you want.

> Hope this helps.

Dito.

Cheers

robert

---

<div class="post-metadata">

**Author:** ![arunvoip](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/e8c25b/32.png) [@arunvoip](https://www.ruby-forum.com/u/arunvoip)\
**Post date:** [May 7, 2009, 1:40pm UTC](https://www.ruby-forum.com/t/removing-whitespace-using-regexp/167266/6 "2009-05-07T13:40:50Z")

</div>

> I know your boss and whoever it is who is dangling your carrots won’t let  
> you use Hpricot, but tell him you will use Hpricot to get properly formatted  
> html and then write a parser to parse the properly formatted html. Even he  
> can’t be opposed to that(seeing as how he wants you to reinvent wheels).  
> That way you can get rid of your whitespace problem and deal with the cosmos  
> at large.

Here’s what we know about Arun from his previous posts…

- he is a “trainee” doing assignments.
- he is learning ruby
- “nobody else” around him knows ruby
- his “boss”/teacher is giving him specific assignments that seem to  
be purely academic exercises, because the constraints (e.g. don’t use  
gsub, parse “[example.com](http://example.com)”) would otherwise be completely ridiculous.
- He doesn’t have the authority to re-scope the assignment or offer  
alternate solutions.

I believe he is asking us to do his homework.

---

<div class="post-metadata">

**Author:** ![arunvoip](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/e8c25b/32.png) [@arunvoip](https://www.ruby-forum.com/u/arunvoip)\
**Post date:** [May 7, 2009, 2:21pm UTC](https://www.ruby-forum.com/t/removing-whitespace-using-regexp/167266/7 "2009-05-07T14:21:53Z")

</div>

How many places do you know that have extensive Ruby training programs  
that  
expect you to write HTML parsers armed with nothing but regular  
expressions?  
😉

I live in Bangalore, and I don’t know one. Either he truly has a  
sadistic  
boss, or his truth is stranger than fiction. I don’t doubt that it is  
homework of some sort.

Jayanth
