我一直在試圖抓住句子內的第一個位置名稱。所需的位置名稱將正好開始於第一句的第二個首都,然後第一個點之前正好結束正則表達式獲取文本
例(。):
It is located at Supreme Court. Follow by some other text.
^ ^
期望了把
最高法院
對不起,我不能告訴你我到目前爲止有一段代碼。經過一個小時的努力,我沒有任何具體的東西。
如果您在Ruby中顯示代碼示例將受到高度讚賞。
我一直在試圖抓住句子內的第一個位置名稱。所需的位置名稱將正好開始於第一句的第二個首都,然後第一個點之前正好結束正則表達式獲取文本
例(。):
It is located at Supreme Court. Follow by some other text.
^ ^
期望了把
最高法院
對不起,我不能告訴你我到目前爲止有一段代碼。經過一個小時的努力,我沒有任何具體的東西。
如果您在Ruby中顯示代碼示例將受到高度讚賞。
此正則表達式:
regexp = /^.*?[A-Z].*?([A-Z].*?)\./
match = regexp.match(subject)
if match
match = match[1]
else
match = ""
end
會產生:Supreme Court
我從匹配的第一個首都,而忽略其他的everyhting字符串的開頭開始。然後我匹配第二個首都,並將結果保存到反向引用1中,直到第一個點。
這爲我工作:
irb(main):001:0> location = "It is located at Supreme Court. Follow by some other text."
=> "It is located at Supreme Court. Follow by some other text."
irb(main):002:0> location.match(/[^A-Za-z][\bA-Z][\w\s]*\./)
=> #<MatchData "Supreme Court.">
OP要求匹配從第二個資本到句子結尾的所有內容。你的正則表達式假定只有兩個單詞。 – Larsenal
編輯一下,我覺得現在好多了。 –
s = 'It is located at Supreme Court. Follow by some other text.'
m = s.match /[A-Z][^A-Z]+([A-Z][^\.]+)/
result = m[1] #Supreme Court
試試這個:
s = 'It is located at Supreme Court. Follow by some other text.'
/[A-Z].+?([A-Z].*)\..+?/.match(s)[1]
這假設有在字符串的開頭沒有空間,因此它看起來的第一個大寫字母是來到一個空間之後,抓住任何東西,直到它找到的第一個時期。
str = "It is located at Supreme Court. Follow by some other text."
m = str.match(/\s([A-Z].*?)\./)
location = m.nil? ? "" : m[1] #just in case there's no match
p location #=> Supreme Court
你有什麼難處?匹配大寫字母,匹配一個點,或提供所需的輸出,一旦你做了比賽? –