我嘗試了很多組合來創建正確的正則表達式,但我失敗了。如何創建正確的RegEx?
我想讀此,輸入:
[@Homer Jay Simpson](id:homer) is a good guy.
,並得到
Array (
[0] => "[@Homer Jay Simpson](id:homer)",
[1] => "Homer Jay Simpson",
[2] => "homer"
)
的感謝!
我嘗試了很多組合來創建正確的正則表達式,但我失敗了。如何創建正確的RegEx?
我想讀此,輸入:
[@Homer Jay Simpson](id:homer) is a good guy.
,並得到
Array (
[0] => "[@Homer Jay Simpson](id:homer)",
[1] => "Homer Jay Simpson",
[2] => "homer"
)
的感謝!
擺弄了一點點後,這個正則表達式會爲你工作:
\[@([^\]]+)\]\(id:([^)]+)\)
使用,如:
$str = "[@Homer Jay Simpson](id:homer) is a good guy.";
preg_match('#\[@([^\]]+)\]\(id:([^)]+)\)#', $str, $matches);
print_r($matches);
產地:
Array
(
[0] => [@Homer Jay Simpson](id:homer)
[1] => Homer Jay Simpson
[2] => homer
)
小費時創建正則表達式模式,從小處開始構建到它的末端。我開始只匹配方括號\[@([^\]]+)\]
的內部,然後拼湊在其餘的部分。完整的日誌here
http://www.phpliveregex.com/p/lAg
preg_match("/\[\@(.*?)\]\(id:(.*?)\)/", $str, $matches);
Var_dump($matches);
這將捕獲括號[]
和()
之間是什麼。
\
使reges讀取符號爲文字。
.*?
表示懶惰捕捉任何東西,如果有任何長度。
我不確定@rika正則表達式是一個不錯的選擇更好地嘗試使用括號來爆炸字符串 – shashi