# How to extract something in between a pattern

**URL:** <https://www.ruby-forum.com/t/how-to-extract-something-in-between-a-pattern/149232>\
**Category:** Ruby\
**Created:** [September 22, 2008, 7:06pm UTC](https://www.ruby-forum.com/t/how-to-extract-something-in-between-a-pattern/149232 "2008-09-22T19:06:22Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![cheyne](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/b9bd4f/32.png) [@cheyne](https://www.ruby-forum.com/u/cheyne)\
**Post date:** [September 22, 2008, 7:06pm UTC](https://www.ruby-forum.com/t/how-to-extract-something-in-between-a-pattern/149232/1 "2008-09-22T19:06:22Z")

</div>

Hi experts,

I’m not very familiar with ruby’s library. I wonder if there a method  
can extract something in a pattern? For example,

I have a string: a=aabbcc

ccddee

I wanna get the anything between

and

, which is ccddee

Thanks in advance.

---

<div class="post-metadata">

**Author:** ![cheyne](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/b9bd4f/32.png) [@cheyne](https://www.ruby-forum.com/u/cheyne)\
**Post date:** [September 22, 2008, 7:50pm UTC](https://www.ruby-forum.com/t/how-to-extract-something-in-between-a-pattern/149232/2 "2008-09-22T19:50:32Z")

</div>

Cheyne Li wrote:

> Hi experts,
> 
> I’m not very familiar with ruby’s library. I wonder if there a method  
> can extract something in a pattern? For example,
> 
> I have a string: a=aabbcc
> 
> ccddee
> 
> I wanna get the anything between
> 
> and
> 
> , which is ccddee
> 
> Thanks in advance.

C:\Users\Alex\>irb  
irb(main):001:0\> require ‘hpricot’  
=\> true  
irb(main):002:0\> a=“aabbcc

ccddee

”  
=\> “aabbcc

ccddee

”  
irb(main):003:0\>  
irb(main):004:0\* doc=Hpricot(a)  
=\> #\<Hpricot::Doc “aabbcc” {elem 

“ccddee”

}\>  
irb(main):005:0\> p doc.at(‘p’).inner\_text  
“ccddee”  
=\> nil  
irb(main):006:0\>

Li

---

<div class="post-metadata">

**Author:** ![cheyne](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/b9bd4f/32.png) [@cheyne](https://www.ruby-forum.com/u/cheyne)\
**Post date:** [September 22, 2008, 8:20pm UTC](https://www.ruby-forum.com/t/how-to-extract-something-in-between-a-pattern/149232/3 "2008-09-22T20:20:24Z")

</div>

Ya, in this case (HTML/XML), Hpricot is your best bet.

Otherwise, standard regex stuff would apply, imo.

---

<div class="post-metadata">

**Author:** ![cheyne](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/b9bd4f/32.png) [@cheyne](https://www.ruby-forum.com/u/cheyne)\
**Post date:** [September 25, 2008, 2:25am UTC](https://www.ruby-forum.com/t/how-to-extract-something-in-between-a-pattern/149232/4 "2008-09-25T02:25:22Z")

</div>

On Sep 22, 12:58 pm, Cheyne Li [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> –  
> Posted viahttp://www.ruby-forum.com/.

If you want to use regexp, a quick and dirty way would be :

(a.split %r{\</?p\>})[1]

---

<div class="post-metadata">

**Author:** ![cheyne](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/b9bd4f/32.png) [@cheyne](https://www.ruby-forum.com/u/cheyne)\
**Post date:** [September 25, 2008, 8:32am UTC](https://www.ruby-forum.com/t/how-to-extract-something-in-between-a-pattern/149232/5 "2008-09-25T08:32:49Z")

</div>

removed\_email\_address@domain.invalid wrote:

> > ## Thanks in advance.
> > 
> > Posted viahttp://www.ruby-forum.com/.
> 
> If you want to use regexp, a quick and dirty way would be :
> 
> (a.split %r{\</?p\>})[1]

or:  
irb(main):001:0\> a = ‘aabbcc

ccddee

’  
=\> “aabbcc

ccddee

”  
irb(main):002:0\> a[%r{

(.\*)

}, 1]  
=\> “ccddee”

> 

–  
Ittay D. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
Tikal [http://www.tikalk.com](http://www.tikalk.com)  
Tikal Project [http://tikal.sourceforge.net](http://tikal.sourceforge.net)

---

<div class="post-metadata">

**Author:** ![cheyne](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/b9bd4f/32.png) [@cheyne](https://www.ruby-forum.com/u/cheyne)\
**Post date:** [September 28, 2008, 9:43pm UTC](https://www.ruby-forum.com/t/how-to-extract-something-in-between-a-pattern/149232/6 "2008-09-28T21:43:31Z")

</div>

Or:

irb(main):004:0\> a = ‘aabbcc

ccddee

ccc

eee

’  
=\> “aabbcc

ccddee

ccc

eee

”  
irb(main):005:0\> a.scan(%r{

([^\<]\*)

})  
=\> [[“ccddee”], [“eee”]]

I perfer to specify what character(s) not to match explicitly.
