Ich habe folgende Strings:Wie passe ich jedes Wort in einer Zeichenfolge außer dem letzten Wort an?
Chicago CPA
New York CPA
West Virginia Accountant
Wie kann ich abhacken immer nur das letzte Wort (und das vorhergehende Leerzeichen) in der Zeichenfolge, alle anderen Worten, bevor das letzte Wort zu bewahren?
Also die richtigen Versionen der oben genannten Datensatzes wäre:
Chicago
New York
West Virginia
Auch ist es möglich, Gruppen auf Rubular zu testen passende oder gibt es einen anderen Online-regex-Editor/Tester, die ich verwenden kann, reguläre Ausdrücke zu testen mit passenden Gruppen?
Edit 1
Viele der Antworten in der Theorie groß sind. Ich lese sie, ich verstehe sie und ich teste sie an einer Vanilleschnur und sie scheinen zu funktionieren. Aber wenn ich es auf meine Daten versuche, tut es das nicht. Ich war eine Weile ratlos, und mir wurde gerade klar warum.
Dies ist die HTML an dem ich arbeite:
dies also der Text, ich bin versucht, auf diese String-Manipulation zu tun:
Chicago <strong>Cpa</strong>
hier So ist das, was passiert, wenn ich versuche, jede der Antworten unten.
@ Darshan suchen:
[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
@ Lucas eigenen:
[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(' ')
=> ""
@ Eric eigenen:
[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(" ")
=> ""
@ Casimir eigenen (dies ist bei weitem das beste, tatsächlich):
[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"
@ Santosh eigenen:
[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
Ich entschuldige mich nicht zu tun dies früher, aber ich habe nicht erwartet, dass dies ein Problem ist.
Ich sehe, wohin du gehst, aber diese Regexp scheint nicht mit 'Chicago CPA' pro Rubular.com übereinzustimmen. Es passt nur – marcamillion
@marcamillion Wieder funktioniert es für mich sowohl auf meiner Maschine als auch bei rugular.com. Ich würde Ihre Datenmenge in einen Hex-Editor ablegen und sehen, was mit Ihrem Leerzeichen passiert. –
@marcamillion http://rubular.com/r/b9X60eAwNc –