I持って次の文字列:最後の単語を除く文字列のすべての単語をどのように一致させるのですか?
Chicago CPA
New York CPA
West Virginia Accountant
がどのように私はいつもちょうど最後の単語の前に他のすべての単語を維持し、文字列の最後の単語(と前の空白)を切り落とすのですか?
したがって、上記のデータ・セットの正しいバージョンは次のようになります。
Chicago
New York
West Virginia
また、それはRubularに一致するグループをテストすることが可能であるか、私は正規表現をテストするために使用できる別のオンライン正規表現エディタ/テスターがあります一致するグループと?
編集1
回答の多くは、理論的には素晴らしいです。私はそれらを読んで、私はそれらを理解し、私はバニラの文字列でそれらをテストし、彼らは動作するようです。しかし、私が自分のデータで試してみると、それはしません。私はしばらく悩まされていましたが、なぜ私はその理由を理解しました。
これは私が働いているHTMLです:
だから、このテキストは、私が上で、この文字列操作を行うにしようとしています:だからここ
Chicago <strong>Cpa</strong>
することは、私がしようとすると何が起こるかでありますそれぞれ以下の答え。ダルシャンさん@
:ルーカス自身@
[56] pry(YPCrawler::PageCrawler)> @document.css('header h1.search-term').first.text
=> "Chicago Cpa"
[57] pry(YPCrawler::PageCrawler)> @document.css('header h1.search-term').first.text.class
=> String
[58] pry(YPCrawler::PageCrawler)> @document.css('header h1.search-term').first.text.match(/(.*) \w+\z/)[1]
NoMethodError: undefined method `[]' for nil:NilClass
from (pry):57:in `<class:PageCrawler>'
[59] pry(YPCrawler::PageCrawler)> @document.css('header h1.search-term').first.text[/.*(?=\s\w+\z)/]
=> nil
:エリック自身@
[60] pry(YPCrawler::PageCrawler)> @document.css('header h1.search-term').first.text
=> "Chicago Cpa"
[61] pry(YPCrawler::PageCrawler)> @document.css('header h1.search-term').first.text.class
=> String
[62] pry(YPCrawler::PageCrawler)> @document.css('header h1.search-term').first.text.split()[0...-1].join(' ')
=> ""
:
[65] pry(YPCrawler::PageCrawler)> @document.css('header h1.search-term').first.text
=> "Chicago Cpa"
[66] pry(YPCrawler::PageCrawler)> @document.css('header h1.search-term').first.text.class
=> String
[67] pry(YPCrawler::PageCrawler)> @document.css('header h1.search-term').first.text.split().reverse.drop(1).reverse.join(" ")
=> ""
Santosh自身@
[68] pry(YPCrawler::PageCrawler)> @document.css('header h1.search-term').first.text
=> "Chicago Cpa"
[69] pry(YPCrawler::PageCrawler)> @document.css('header h1.search-term').first.text.class
=> String
[70] pry(YPCrawler::PageCrawler)> @document.css('header h1.search-term').first.text.sub(/\W+\w+\W*$/, '')
=> "Chicago"
:カシミール自身(この1つは実際には、これまでの最高である)@
[71] pry(YPCrawler::PageCrawler)> @document.css('header h1.search-term').first.text
=> "Chicago Cpa"
[72] pry(YPCrawler::PageCrawler)> @document.css('header h1.search-term').first.text.class
=> String
[73] pry(YPCrawler::PageCrawler)> @document.css('header h1.search-term').first.text[/(.*)\s/,1]
=> nil
やっていないために私の謝罪これより早いですが、私はこれが問題であるとは予想していませんでした。これを達成する
に変更します。あなたはどこに行くのか見ていますが、この正規表現はRubular.comごとに 'Chicago CPA'と一致しません。 – marcamillion
@marcamillionにもマッチします。私のマシンとrubular.comの両方で私にとってはうまくいきます。あなたのデータセットを16進エディタにダンプし、空白で何が起こっているのかを見てみましょう。 –
@marcamillion http://rubular.com/r/b9X60eAwNc –