Hello, I am trying to build a regex to extract vowels and consonants from a string. So far, I am able to extract the basic a-e-i-o-u sequence using the following extension to the String class: class String def vowels scan(/[aeiou]/i) end def consonants scan(/[^aeiou]/i) end end examples:>> "Mary had a little lamb".vowels=> aaaiea>> "Mary had a little lamb".consonants=> mryhdlttllmb However, the regex does not accommodate the conditional treatment of ''y'' as a vowel *if there is no other vowel before or after it.* If properly implemented, the previous examples would return: ayaaiea (vowels) and mrhdlttllmb (consonants). According to this post (http://www.perlmonks.org/?node_id=592867), this could be accommodated in Perl using "zero-width negative-look- behind" and "zero-width negative-look-ahead" assertions as follows: my @vowels = ( /[aeiou]|(?<![aeiou])y(?![aeiou])/gi ); Where, the "(?<!...)" is a "zero-width negative-look-behind assertion" and the "(?!...)" is a "zero-width negative-look-ahead assertion". I have since discovered that Ruby 1.8 lacks regex look-behind assertion so one can''t simply translate this code fragment to Ruby regex syntax. So, the question is: how can I accomplish the end result in Ruby (a-e- i-o-u + the conditional treatment of ''y'' as a vowel *if there is no other vowel before or after it.*) ? Any thoughts are appreciated. Dondi. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Install the oniguruma gem. gem install oniguruma It requires the C lib (installable from ports), but is installed by default with Ruby 1.9. It handles lookbehind. --Jeremy On Feb 2, 2008 11:36 PM, Dondi <Donovan.Dillon-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> > Hello, > > I am trying to build a regex to extract vowels and consonants from a > string. So far, I am able to extract the basic a-e-i-o-u sequence > using the following extension to the String class: > > class String > def vowels > scan(/[aeiou]/i) > end > def consonants > scan(/[^aeiou]/i) > end > end > > examples: > > >> "Mary had a little lamb".vowels > => aaaiea > > >> "Mary had a little lamb".consonants > => mryhdlttllmb > > However, the regex does not accommodate the conditional treatment of > ''y'' as a vowel *if there is no other vowel before or after it.* If > properly implemented, the previous examples would return: ayaaiea > (vowels) and mrhdlttllmb (consonants). > > According to this post (http://www.perlmonks.org/?node_id=592867), > this could be accommodated in Perl using "zero-width negative-look- > behind" and "zero-width negative-look-ahead" assertions as follows: > > my @vowels = ( /[aeiou]|(?<![aeiou])y(?![aeiou])/gi ); > > Where, the "(?<!...)" is a "zero-width negative-look-behind assertion" > and the "(?!...)" is a "zero-width negative-look-ahead assertion". > > I have since discovered that Ruby 1.8 lacks regex look-behind > assertion so one can''t simply translate this code fragment to Ruby > regex syntax. > > So, the question is: how can I accomplish the end result in Ruby (a-e- > i-o-u + the conditional treatment of ''y'' as a vowel *if there is no > other vowel before or after it.*) ? Any thoughts are appreciated. > > Dondi. > > >-- http://www.jeremymcanally.com/ My books: Ruby in Practice http://www.manning.com/mcanally/ My free Ruby e-book http://www.humblelittlerubybook.com/ My blogs: http://www.mrneighborly.com/ http://www.rubyinpractice.com/ --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Thanks for the heads-up on the gem Jeremy. I was neither bold enough to attempt a custom Ruby build nor to jump to Ruby 1.9 just yet, so this is a perfect alternative. I installed the gem and the C lib, and placed ''require oniguruma'' in application.rb, but I am receiving a ''MissingSourceFile (no such file to load -- oniguruma)'' error during application load. Here''s an excerpt from the Rails console: Machine:appdir User$ script/server => Booting Mongrel (use ''script/server webrick'' to force WEBrick) => Rails application starting on http://0.0.0.0:3000 => Call with -d to detach => Ctrl-C to shutdown server ** Starting Mongrel listening at 0.0.0.0:3000 ** Starting Rails with development environment... ** Rails loaded. ** Loading any Rails specific GemPlugins ** Signals ready. TERM => stop. USR2 => restart. INT => stop (no restart). ** Rails signals registered. HUP => reload (without restart). It might not work well. ** Mongrel available at 0.0.0.0:3000 ** Use CTRL-C to stop. Processing Base#index (for 127.0.0.1 at 2008-02-03 19:47:42) [GET] Session ID: BAh7CToMY3NyZl9pZCIlNGNmMzg5M2Y2MmMyYzNjOTg0ZmJlZTYxZjZiOGQz %0AMzgiCmZsYXNoSUM6J0FjdGlvbkNvbnRyb2xsZXI6OkZsYXNoOjpGbGFzaEhh %0Ac2h7AAY6CkB1c2VkewA6DnJldHVybl90bzA6DHVzZXJfaWRpGQ%3D%3D-- c69ffa8adf4a50532ab06c5abc6205c90235ca54 Parameters: {} MissingSourceFile (no such file to load -- oniguruma): /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'' /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'' /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.0.2/lib/ active_support/dependencies.rb:496:in `require'' /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.0.2/lib/ active_support/dependencies.rb:342:in `new_constants_in'' /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.0.2/lib/ active_support/dependencies.rb:496:in `require'' /app/controllers/application.rb:9 Line 9 of application.rb contains "require ''oniguruma''." I followed the standard install process for installing the onig-5.9.1 package: 1. `cd'' to the directory containing the package''s source code, type sudo ./configure 2. Type `make'' to compile the package. 3. Type `make install'' to install the programs, data files and documentation. I am running Rails 2.0.2 and Ruby is installed at usr/local on my system (which is consistent with the default oniguruma install location of usr/local/bin and /usr/local/man) so I am at a loss for an explanation of the error. Any thoughts? Dondi. On Feb 3, 12:01 am, "Jeremy McAnally" <jeremymcana...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> Install the oniguruma gem. > > gem install oniguruma > > It requires the C lib (installable from ports), but is installed by > default with Ruby 1.9. It handles lookbehind. > > --Jeremy > > On Feb 2, 2008 11:36 PM, Dondi <Donovan.Dil...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > > > Hello, > > > I am trying to build a regex to extract vowels and consonants from a > > string. So far, I am able to extract the basic a-e-i-o-u sequence > > using the following extension to the String class: > > > class String > > def vowels > > scan(/[aeiou]/i) > > end > > def consonants > > scan(/[^aeiou]/i) > > end > > end > > > examples: > > > >> "Mary had a little lamb".vowels > > => aaaiea > > > >> "Mary had a little lamb".consonants > > => mryhdlttllmb > > > However, the regex does not accommodate the conditional treatment of > > ''y'' as a vowel *if there is no other vowel before or after it.* If > > properly implemented, the previous examples would return: ayaaiea > > (vowels) and mrhdlttllmb (consonants). > > > According to this post (http://www.perlmonks.org/?node_id=592867), > > this could be accommodated in Perl using "zero-width negative-look- > > behind" and "zero-width negative-look-ahead" assertions as follows: > > > my @vowels = ( /[aeiou]|(?<![aeiou])y(?![aeiou])/gi ); > > > Where, the "(?<!...)" is a "zero-width negative-look-behind assertion" > > and the "(?!...)" is a "zero-width negative-look-ahead assertion". > > > I have since discovered that Ruby 1.8 lacks regex look-behind > > assertion so one can''t simply translate this code fragment to Ruby > > regex syntax. > > > So, the question is: how can I accomplish the end result in Ruby (a-e- > > i-o-u + the conditional treatment of ''y'' as a vowel *if there is no > > other vowel before or after it.*) ? Any thoughts are appreciated. > > > Dondi. > > --http://www.jeremymcanally.com/ > > My books: > Ruby in Practicehttp://www.manning.com/mcanally/ > > My free Ruby e-bookhttp://www.humblelittlerubybook.com/ > > My blogs:http://www.mrneighborly.com/http://www.rubyinpractice.com/--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
OK, solved the "MissingSourceFile" error by re-installing the gem. Now I am receiving the following error: ** Starting Mongrel listening at 0.0.0.0:3000 ** Starting Rails with development environment... Exiting /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'': ./lib/string_extensions.rb:4: undefined (?...) sequence: /[aeiou]|(?<![aeiou])y(?![aeiou])/ (SyntaxError) ./lib/string_extensions.rb:8: undefined (?...) sequence: /![aeiou]|(? <=[aeiou])y(?=[aeiou])/ from /usr/local/lib/ruby/site_ruby/1.8/ rubygems/custom_require.rb:27:in `require'' It seems to be complaining about the look-behind and look-ahead assertions in the following code fragment: class String def vowels scan(/[aeiou]|(?<![aeiou])y(?![aeiou])/i) end def consonants scan(/![aeiou]|(?<=[aeiou])y(?=[aeiou])/i) end end According to this reference (http://www.geocities.jp/kosako3/oniguruma/ doc/RE.txt) the look behind and look ahead syntax appear to be correct (ref section 7. Extended groups). This suggests either: A. Ruby may be using the default regexp library instead of the oniguruma regexp library, B. The oniguruma regexp library is not accessible via the ''scan'' method, or C. Something else entirely ... hmmm ... <scratches head/> On Feb 3, 8:08 pm, Dondi <Donovan.Dil...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> Thanks for the heads-up on the gem Jeremy. I was neither bold enough > to attempt a custom Ruby build nor to jump to Ruby 1.9 just yet, so > this is a perfect alternative. > > I installed the gem and the C lib, and placed ''require oniguruma'' in > application.rb, but I am receiving a ''MissingSourceFile (no such file > to load -- oniguruma)'' error during application load. Here''s an > excerpt from the Rails console: > > Machine:appdir User$ script/server > => Booting Mongrel (use ''script/server webrick'' to force WEBrick) > => Rails application starting onhttp://0.0.0.0:3000 > => Call with -d to detach > => Ctrl-C to shutdown server > ** Starting Mongrel listening at 0.0.0.0:3000 > ** Starting Rails with development environment... > ** Rails loaded. > ** Loading any Rails specific GemPlugins > ** Signals ready. TERM => stop. USR2 => restart. INT => stop (no > restart). > ** Rails signals registered. HUP => reload (without restart). It > might not work well. > ** Mongrel available at 0.0.0.0:3000 > ** Use CTRL-C to stop. > > Processing Base#index (for 127.0.0.1 at 2008-02-03 19:47:42) [GET] > Session ID: > BAh7CToMY3NyZl9pZCIlNGNmMzg5M2Y2MmMyYzNjOTg0ZmJlZTYxZjZiOGQz > %0AMzgiCmZsYXNoSUM6J0FjdGlvbkNvbnRyb2xsZXI6OkZsYXNoOjpGbGFzaEhh > %0Ac2h7AAY6CkB1c2VkewA6DnJldHVybl90bzA6DHVzZXJfaWRpGQ%3D%3D-- > c69ffa8adf4a50532ab06c5abc6205c90235ca54 > Parameters: {} > > MissingSourceFile (no such file to load -- oniguruma): > /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in > `gem_original_require'' > /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in > `require'' > /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.0.2/lib/ > active_support/dependencies.rb:496:in `require'' > /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.0.2/lib/ > active_support/dependencies.rb:342:in `new_constants_in'' > /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.0.2/lib/ > active_support/dependencies.rb:496:in `require'' > /app/controllers/application.rb:9 > > Line 9 of application.rb contains "require ''oniguruma''." > > I followed the standard install process for installing the onig-5.9.1 > package: > > 1. `cd'' to the directory containing the package''s source code, type > sudo ./configure > > 2. Type `make'' to compile the package. > > 3. Type `make install'' to install the programs, data files and > documentation. > > I am running Rails 2.0.2 and Ruby is installed at usr/local on my > system (which is consistent with the default oniguruma install > location of usr/local/bin and /usr/local/man) so I am at a loss for an > explanation of the error. Any thoughts? > > Dondi. > > On Feb 3, 12:01 am, "Jeremy McAnally" <jeremymcana...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > wrote: > > > Install the oniguruma gem. > > > gem install oniguruma > > > It requires the C lib (installable from ports), but is installed by > > default with Ruby 1.9. It handles lookbehind. > > > --Jeremy > > > On Feb 2, 2008 11:36 PM, Dondi <Donovan.Dil...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > Hello, > > > > I am trying to build a regex to extract vowels and consonants from a > > > string. So far, I am able to extract the basic a-e-i-o-u sequence > > > using the following extension to the String class: > > > > class String > > > def vowels > > > scan(/[aeiou]/i) > > > end > > > def consonants > > > scan(/[^aeiou]/i) > > > end > > > end > > > > examples: > > > > >> "Mary had a little lamb".vowels > > > => aaaiea > > > > >> "Mary had a little lamb".consonants > > > => mryhdlttllmb > > > > However, the regex does not accommodate the conditional treatment of > > > ''y'' as a vowel *if there is no other vowel before or after it.* If > > > properly implemented, the previous examples would return: ayaaiea > > > (vowels) and mrhdlttllmb (consonants). > > > > According to this post (http://www.perlmonks.org/?node_id=592867), > > > this could be accommodated in Perl using "zero-width negative-look- > > > behind" and "zero-width negative-look-ahead" assertions as follows: > > > > my @vowels = ( /[aeiou]|(?<![aeiou])y(?![aeiou])/gi ); > > > > Where, the "(?<!...)" is a "zero-width negative-look-behind assertion" > > > and the "(?!...)" is a "zero-width negative-look-ahead assertion". > > > > I have since discovered that Ruby 1.8 lacks regex look-behind > > > assertion so one can''t simply translate this code fragment to Ruby > > > regex syntax. > > > > So, the question is: how can I accomplish the end result in Ruby (a-e- > > > i-o-u + the conditional treatment of ''y'' as a vowel *if there is no > > > other vowel before or after it.*) ? Any thoughts are appreciated. > > > > Dondi. > > > --http://www.jeremymcanally.com/ > > > My books: > > Ruby in Practicehttp://www.manning.com/mcanally/ > > > My free Ruby e-bookhttp://www.humblelittlerubybook.com/ > > > My blogs:http://www.mrneighborly.com/http://www.rubyinpractice.com/--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Thanks for all the help everyone. The problem was solved with the help from pullmonkey on Rails Forum! Here is the solution: Objective: 1. Extract vowels and consonants from a string 2. Handle the conditional treatment of ''y'' as a vowel under the following circumstances: - y is a vowel if it is surrounded by consonants - y is a consonant if it is adjacent to a vowel Here is the code that works: def vowels(name_str) reg = Oniguruma::ORegexp.new(''[aeiou]|(?<![aeiou])y(?![aeiou])'') reg.match_all(name_str).to_s.scan(/./) end def consonants(name_str) reg = Oniguruma::ORegexp.new(''[bcdfghjklmnpqrstvwx]|(?<=[aeiou])y| y(?=[aeiou])'') reg.match_all(name_str).to_s.scan(/./) end (Note, the .scan(/./) can be eliminated to return an array) The major problem was getting the code to accurately treat "y" as a consonant. The key to solving this problem was to: 1. define unconditional consonants explicitly (i.e., [bcdfghjklmnpqrstvwx]) -- not as [^aeiou] which automatically includes "y" thus OVER-RIDING any conditional reatment of "y" that follows 2. define conditional "y" regexp assertions independently, i.e., "| (? <=[aeiou]) y | y (?=[aeiou])" -- not "|(?<=[aeiou]) y (?=[aeiou])" which only matches "y" preceded AND followed by a vowel, not preceded OR followed by a vowel HTH. On Feb 3, 11:00 pm, Dondi <Donovan.Dil...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> OK, solved the "MissingSourceFile" error by re-installing the gem. Now > I am receiving the following error: > > ** Starting Mongrel listening at 0.0.0.0:3000 > ** Starting Rails with development environment... > Exiting > /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in > `gem_original_require'': ./lib/string_extensions.rb:4: undefined (?...) > sequence: /[aeiou]|(?<![aeiou])y(?![aeiou])/ (SyntaxError) > ./lib/string_extensions.rb:8: undefined (?...) sequence: /![aeiou]|(? > <=[aeiou])y(?=[aeiou])/ from /usr/local/lib/ruby/site_ruby/1.8/ > rubygems/custom_require.rb:27:in `require'' > > It seems to be complaining about the look-behind and look-ahead > assertions in the following code fragment: > > class String > def vowels > scan(/[aeiou]|(?<![aeiou])y(?![aeiou])/i) > end > def consonants > scan(/![aeiou]|(?<=[aeiou])y(?=[aeiou])/i) > end > end > > According to this reference (http://www.geocities.jp/kosako3/oniguruma/ > doc/RE.txt) the look behind and look ahead syntax appear to be correct > (ref section 7. Extended groups). This suggests either: > > A. Ruby may be using the default regexp library instead of the > oniguruma regexp library, > > B. The oniguruma regexp library is not accessible via the ''scan'' > method, or > > C. Something else entirely > > ... hmmm ... <scratches head/> > > On Feb 3, 8:08 pm, Dondi <Donovan.Dil...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > Thanks for the heads-up on the gem Jeremy. I was neither bold enough > > to attempt a custom Ruby build nor to jump to Ruby 1.9 just yet, so > > this is a perfect alternative. > > > I installed the gem and the C lib, and placed ''require oniguruma'' in > > application.rb, but I am receiving a ''MissingSourceFile (no such file > > to load -- oniguruma)'' error during application load. Here''s an > > excerpt from the Rails console: > > > Machine:appdir User$ script/server > > => Booting Mongrel (use ''script/server webrick'' to force WEBrick) > > => Rails application starting onhttp://0.0.0.0:3000 > > => Call with -d to detach > > => Ctrl-C to shutdown server > > ** Starting Mongrel listening at 0.0.0.0:3000 > > ** Starting Rails with development environment... > > ** Rails loaded. > > ** Loading any Rails specific GemPlugins > > ** Signals ready. TERM => stop. USR2 => restart. INT => stop (no > > restart). > > ** Rails signals registered. HUP => reload (without restart). It > > might not work well. > > ** Mongrel available at 0.0.0.0:3000 > > ** Use CTRL-C to stop. > > > Processing Base#index (for 127.0.0.1 at 2008-02-03 19:47:42) [GET] > > Session ID: > > BAh7CToMY3NyZl9pZCIlNGNmMzg5M2Y2MmMyYzNjOTg0ZmJlZTYxZjZiOGQz > > %0AMzgiCmZsYXNoSUM6J0FjdGlvbkNvbnRyb2xsZXI6OkZsYXNoOjpGbGFzaEhh > > %0Ac2h7AAY6CkB1c2VkewA6DnJldHVybl90bzA6DHVzZXJfaWRpGQ%3D%3D-- > > c69ffa8adf4a50532ab06c5abc6205c90235ca54 > > Parameters: {} > > > MissingSourceFile (no such file to load -- oniguruma): > > /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in > > `gem_original_require'' > > /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in > > `require'' > > /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.0.2/lib/ > > active_support/dependencies.rb:496:in `require'' > > /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.0.2/lib/ > > active_support/dependencies.rb:342:in `new_constants_in'' > > /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.0.2/lib/ > > active_support/dependencies.rb:496:in `require'' > > /app/controllers/application.rb:9 > > > Line 9 of application.rb contains "require ''oniguruma''." > > > I followed the standard install process for installing the onig-5.9.1 > > package: > > > 1. `cd'' to the directory containing the package''s source code, type > > sudo ./configure > > > 2. Type `make'' to compile the package. > > > 3. Type `make install'' to install the programs, data files and > > documentation. > > > I am running Rails 2.0.2 and Ruby is installed at usr/local on my > > system (which is consistent with the default oniguruma install > > location of usr/local/bin and /usr/local/man) so I am at a loss for an > > explanation of the error. Any thoughts? > > > Dondi. > > > On Feb 3, 12:01 am, "Jeremy McAnally" <jeremymcana...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > > wrote: > > > > Install the oniguruma gem. > > > > gem install oniguruma > > > > It requires the C lib (installable from ports), but is installed by > > > default with Ruby 1.9. It handles lookbehind. > > > > --Jeremy > > > > On Feb 2, 2008 11:36 PM, Dondi <Donovan.Dil...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > Hello, > > > > > I am trying to build a regex to extract vowels and consonants from a > > > > string. So far, I am able to extract the basic a-e-i-o-u sequence > > > > using the following extension to the String class: > > > > > class String > > > > def vowels > > > > scan(/[aeiou]/i) > > > > end > > > > def consonants > > > > scan(/[^aeiou]/i) > > > > end > > > > end > > > > > examples: > > > > > >> "Mary had a little lamb".vowels > > > > => aaaiea > > > > > >> "Mary had a little lamb".consonants > > > > => mryhdlttllmb > > > > > However, the regex does not accommodate the conditional treatment of > > > > ''y'' as a vowel *if there is no other vowel before or after it.* If > > > > properly implemented, the previous examples would return: ayaaiea > > > > (vowels) and mrhdlttllmb (consonants). > > > > > According to this post (http://www.perlmonks.org/?node_id=592867), > > > > this could be accommodated in Perl using "zero-width negative-look- > > > > behind" and "zero-width negative-look-ahead" assertions as follows: > > > > > my @vowels = ( /[aeiou]|(?<![aeiou])y(?![aeiou])/gi ); > > > > > Where, the "(?<!...)" is a "zero-width negative-look-behind assertion" > > > > and the "(?!...)" is a "zero-width negative-look-ahead assertion". > > > > > I have since discovered that Ruby 1.8 lacks regex look-behind > > > > assertion so one can''t simply translate this code fragment to Ruby > > > > regex syntax. > > > > > So, the question is: how can I accomplish the end result in Ruby (a-e- > > > > i-o-u + the conditional treatment of ''y'' as a vowel *if there is no > > > > other vowel before or after it.*) ? Any thoughts are appreciated. > > > > > Dondi. > > > > --http://www.jeremymcanally.com/ > > > > My books: > > > Ruby in Practicehttp://www.manning.com/mcanally/ > > > > My free Ruby e-bookhttp://www.humblelittlerubybook.com/ > > > > My blogs:http://www.mrneighborly.com/http://www.rubyinpractice.com/--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---