正則表達式我有一個網址: http://example.com/(S(4txk2wasxh3u0slptzi20qyj))/CWC_Link.aspx
了用於提取網址
,但我只想要提取此部分: (S(4txk2anwasxh3u0slptzi20qyj))/
請,任何人都可以建議我的正則表達式這個
正則表達式我有一個網址: http://example.com/(S(4txk2wasxh3u0slptzi20qyj))/CWC_Link.aspx
了用於提取網址
,但我只想要提取此部分: (S(4txk2anwasxh3u0slptzi20qyj))/
請,任何人都可以建議我的正則表達式這個
關鍵點要注意的是,()
字符標記邊界,並且沒有/
字符在內容中:
/(\(S\([^/()]+\)\))/
這裏有一個小錯誤,你在正則表達式中的第一個「/」會導致' /(S(4txk2anwasxh3u0slptzi20qyj))/'。 – Simon
@quetzalcoatl thanx幫我出去的人 –
@Simon:沒有錯。那些是邊界角色。請注意,該表達式中有一個捕獲組。應用正則表達式後,您應該讀取$ 1匹配(第一次捕獲,'(S(4txk2anwasxh3u0slptzi20qyj))'),而不是$ 0(整個匹配'/(S(4txk2anwasxh3u0slptzi20qyj))/')。如果沒有這個邊界字符,如果你傳遞一個'http://farmer.gov.in/asdada(S(foo))asdasd /(S(key))/ asdasdasd'的url,你可能會抓到'foo'而不是'鍵'。但是,當然這是無論如何不可能的,你可以安全地刪除額外的邊界'/'。 – quetzalcoatl
這是你的正則表達式。括號中的部分將提取所需片段
/^.+\/([^\/]+)\/.+$/
基本上,邏輯很簡單: ^
- 在開始字符串
.+\/
的馬克 - 所有符號的下一部分之前匹配。正則表達式的這部分是由正則表達式的考慮到默認的「貪婪」的行爲,因此這部分在你的榜樣
([^\/]+)
匹配http://farmer.gov.in/
- 兩條斜線
\/.+$
之間的所有符號匹配 - 所有符號匹配,直到結束字符串
例如用PHP語言:
<?php
$string = "http://farmer.gov.in/(S(4txk2wasxh3u0slptzi20qyj))/CWC_Link.aspx";
$regex = "/^.+\/([^\/]+)\/.+$/";
preg_match($regex, $string, $matches);
var_dump($matches);
?>
在輸出$matches[1]
將有你需要的價值(S(4txk2wasxh3u0slptzi20qyj))
此正則表達式做這項工作:
\(.*\)\/
只是比賽的開口支架,然後什麼,直到右括號以正斜槓。
你在用什麼語言? – DaoWen
**這可能不是正則表達式的工作,而是現有工具的選擇語言。**正則表達式並非您在涉及字符串的每一個問題時都會出現的魔術棒。您可能想要使用已經編寫,測試和調試的現有代碼。 在PHP中,使用['parse_url'](http://php.net/manual/en/function.parse-url.php)函數。 Perl:['URI' module](http://search.cpan.org/dist/URI/)。 Ruby:['URI'' module](http://www.ruby-doc.org/stdlib-1.9.3/libdoc/uri/rdoc/URI.html)。 (''Uri'class](http://msdn.microsoft.com/zh-cn/library/txt7706a.aspx) –