2012-06-05 20 views
0

我需要一種識別類似圖案的網址的方法,例如當匹配如何識別C#中具有相似模式的網址?

http://mysite.com/page/123 
and 
http://mysite.com/page/456 

http://mysite.com/?page=123 
and 
http://mysite.com/?page=456 

返回 true功能
http://mysite.com/?page=123&param=2 
and 
http://mysite.com/?page=456&param=3 

我不需要在這裏檢查URL的有效性,只有看看的模式是相同。 我可能需要一個正則表達式,但無法弄清楚如何去做。誰能幫忙?謝謝。

+0

'http://mysite.com/?param = 2&page = 456'如何呢? –

+0

@MarcGravell如果它很容易實現它將是有用的,但不是嚴格必要的。 – Burjua

回答

2

使用a lowest common subsequence algorithm併除以任一字符串的長度。如果它超過了任意數量,它們已經很普通了。

+0

什麼是在字符串中找到相同子序列的最佳方式?我想我可以通過字符串中的字符進行foreach。有沒有更好的辦法? – Burjua

+0

尋找任何野外實施,這是一個常見的問題。 – Reactormonk

2

沒有一個明確的答案,但我覺得,如果你想這在廣義意義上很好地工作,你將需要的內容感知,即你需要在每個URL打入小節:

  • 協議
  • 路徑
  • 查詢字符串

...而各自獨立的過程。可接受的模糊程度將控制您需要分解URL的程度,但每個部分(我覺得)都需要非常具體的檢查。協議和域可以是直接字符串匹配,但路徑可能可以用'/'分隔,然後在基本長度檢查之後,可以逐個比較元素,只比較相等深度的項目(使用直接相等或「改變距離「就像之前提到的Levenshtein距離)。查詢字符串可以通過「&」的簡單拆分分解成字典,然後按「=」分類,然後按照您的意願進行排序和比較。這也將滿足@ MarcGravell關於重新排序查詢字符串參數的問題。