【发布时间】:2016-09-30 23:33:00
【问题描述】:
我有以下字符串:
Chicago CPA
New York CPA
West Virginia Accountant
我如何始终只删除字符串中的最后一个单词(和前面的空格),保留最后一个单词之前的所有其他单词?
所以上述数据集的正确版本应该是:
Chicago
New York
West Virginia
另外,是否可以在 Rubular 上测试匹配组,或者是否有其他在线正则表达式编辑器/测试器可用于测试具有匹配组的正则表达式?
编辑 1
许多答案在理论上都很棒。我读了它们,我理解它们,我在香草弦上测试它们,它们似乎有效。但是当我在我的数据上尝试它时,它没有。我被难住了一会儿,我才明白为什么。
这是我正在处理的 HTML:
<h1 class="search-term">
Chicago <strong>Cpa</strong>
</h1>
所以这是文本,我正在尝试对以下字符串进行操作:
Chicago <strong>Cpa</strong>
所以当我尝试以下每个答案时会发生这种情况。
@Darshan 的:
[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 自己的:
[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 自己的:
[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 自己的(实际上这是迄今为止最好的):
[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 自己的:
[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
我很抱歉没有早点这样做,但我没有预料到这是一个问题。
【问题讨论】: