我有以下文字:內的文本刮子使用Ruby
<script>window.location.replace(\"https:\\/\\/www.facebook.com\\/myuserprofilename\");</script>
我需要得到文本「myuserprofilename」,但我不能讓正則表達式正確。 任何人都可以幫助我嗎?
我有以下文字:內的文本刮子使用Ruby
<script>window.location.replace(\"https:\\/\\/www.facebook.com\\/myuserprofilename\");</script>
我需要得到文本「myuserprofilename」,但我不能讓正則表達式正確。 任何人都可以幫助我嗎?
string = '<script>window.location.replace(\"https:\\/\\/www.facebook.com\\/myuserprofilename\");</script>'
puts string[/facebook.com\\\/(\w+)/, 1] # => myuserprofilename
我很懷疑URL的格式。它看起來像檢查字符串的結果,而不像我們通常在HTML中看到的或處理HTML時的結果。
隨着字符串的清理,我希望它能在野外看到,下面是我們如何使用Nokogiri解析HTML,找到<script>
標記的內容,然後訪問URL的最後部分路徑:
require 'nokogiri'
require 'uri'
doc = Nokogiri::HTML('<html><body><script>window.location.replace("https://www.facebook.com/myuserprofilename");</script></body></html>')
url = doc.at('script').text[/\("(.+)"\)/, 1] # => "https://www.facebook.com/myuserprofilename"
File.basename(URI.parse(url).path) # => "myuserprofilename"
使用正則表達式定位特定的<script>
標記比使用像Nokogiri這樣的解析器更容易出錯。一旦找到標籤,使用text
即可輕鬆獲取其內容,然後使用URI的path
方法輕鬆分解標籤。將它傳遞給File.basename
會導致代碼重用現有經過良好測試的車輪,並且由於HTML和URL太易變而更加健壯。
在服務器端或客戶端? – 2014-12-02 13:37:07
紅寶石,服務器端 – Tony 2014-12-02 13:42:10
你使用'nokogiri'寶石嗎? – 2014-12-02 13:52:16