# What's happening here? A strange regexp problem wth posix :a

**URL:** <https://www.ruby-forum.com/t/whats-happening-here-a-strange-regexp-problem-wth-posix-a/101454>\
**Category:** Ruby\
**Created:** [August 4, 2006, 9:52pm UTC](https://www.ruby-forum.com/t/whats-happening-here-a-strange-regexp-problem-wth-posix-a/101454 "2006-08-04T21:52:08Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![rykkers](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/e5b9ba/32.png) [@rykkers](https://www.ruby-forum.com/u/rykkers)\
**Post date:** [August 4, 2006, 9:52pm UTC](https://www.ruby-forum.com/t/whats-happening-here-a-strange-regexp-problem-wth-posix-a/101454/1 "2006-08-04T21:52:08Z")

</div>

I just ran across this, and can’t figure out what’s happening. the  
show\_regexp method is as shown on p73 of the Pickaxe 2nd ed.

irb(main):013:0\> show\_regexp(“comparison is”, /[:alpha:][^.?!\s’"]_/)  
=\> “com\<\> is”  
irb(main):014:0\> show\_regexp(“comparison is”, /[:alpha:][^\s]_/)  
=\> “com\<\> is”  
irb(main):015:0\> show\_regexp(“comparison is”, /[:alpha:][\S]_/)  
=\> “com\<\> is”  
irb(main):016:0\> show\_regexp(“comparison is”, /[a-zA-Z][\S]_/)  
=\> “\<\> is”  
irb(main):017:0\> show\_regexp(“comparison is”, /[a-zA-Z][^\s]\*/)  
=\> “\<\> is”

It looks like the Posix :alpha: character class doesn’t include c, o, or  
m?!?

Or am I missing something?

---

<div class="post-metadata">

**Author:** ![rykkers](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/e5b9ba/32.png) [@rykkers](https://www.ruby-forum.com/u/rykkers)\
**Post date:** [August 4, 2006, 10:01pm UTC](https://www.ruby-forum.com/t/whats-happening-here-a-strange-regexp-problem-wth-posix-a/101454/2 "2006-08-04T22:01:09Z")

</div>

Hey Rick,

On Aug 4, 2006, at 1:48 PM, Rick DeNatale wrote:

> =\> “\<\> is”

You need another pair of brackets around the :alpha:

So like this:

show\_regexp(“comparison is”, /[[:alpha:]][\S]\*/)

That tripped me up when I first used the Posix classes in Ruby, too.

– Brian

---

<div class="post-metadata">

**Author:** ![rykkers](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/e5b9ba/32.png) [@rykkers](https://www.ruby-forum.com/u/rykkers)\
**Post date:** [August 4, 2006, 10:52pm UTC](https://www.ruby-forum.com/t/whats-happening-here-a-strange-regexp-problem-wth-posix-a/101454/3 "2006-08-04T22:52:30Z")

</div>

Brian P. wrote:

> > =\> “com\<\> is”  
> > Or am I missing something?  
> > show\_regexp(“comparison is”, /[[:alpha:]][\S]\*/)
> 
> That tripped me up when I first used the Posix classes in Ruby, too.

It’s not just Ruby that requires the extra brackets.

echo BEGIN{print “123 f 987” ~ /[[:alpha:]]/} | gawk -f -  
1

---

<div class="post-metadata">

**Author:** ![rykkers](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/e5b9ba/32.png) [@rykkers](https://www.ruby-forum.com/u/rykkers)\
**Post date:** [August 5, 2006, 3:13am UTC](https://www.ruby-forum.com/t/whats-happening-here-a-strange-regexp-problem-wth-posix-a/101454/4 "2006-08-05T03:13:45Z")

</div>

Thanks all, that makes sense.

---

<div class="post-metadata">

**Author:** ![rykkers](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/e5b9ba/32.png) [@rykkers](https://www.ruby-forum.com/u/rykkers)\
**Post date:** [August 4, 2006, 11:49pm UTC](https://www.ruby-forum.com/t/whats-happening-here-a-strange-regexp-problem-wth-posix-a/101454/5 "2006-08-04T23:49:37Z")

</div>

On Aug 4, 2006, at 2:50 PM, William J. wrote:

> It’s not just Ruby that requires the extra brackets.
> 
> echo BEGIN{print “123 f 987” ~ /[[:alpha:]]/} | gawk -f -  
> 1

Yeah, I figured it was probably pretty standard, it really makes  
sense–otherwise, the regex parser wouldn’t be able to tell if the  
programmer really just wants to match against the specific  
characters :, a, l, p, and h.

– Brian
