[英]How can use a match in the same regex in php?
我有這個字符串(這是php中的序列化變量):
s:12:"hello "world";
我想只用正則表達式來找到“ hello”世界,我嘗試了一下,但是看起來很愚蠢:P
(s:(?P<num>[0-9]+):".{\k{num}}";)
我只想知道如何在其正則表達式中使用“ num”結果?
這個正則表達式用在一個大的正則表達式中,所以我不能檢查字符串的結尾。
謝謝提前!
您可以像這樣將命名的捕獲組用作反向引用
通過(?P = name)或自PHP 5.2.2起,也可以通過\\ k或\\ k'name'實現對已命名子模式的反向引用。 另外,PHP 5.2.4添加了對\\ k {name}和\\ g {name}的支持。
但是我認為這只能用於再次匹配找到的模式,而不能用作量詞中的數字。 (至少我沒有使其工作。)
您可以使用preg_match
函數,該函數將填充匹配項數組:
如果提供了匹配項,則將其填充為搜索結果。 $ matches [0]將包含與完整模式匹配的文本,$ matches 1將具有與第一個捕獲的帶括號的子模式匹配的文本,依此類推。
有關preg_match的更多信息: PHP:preg_match
$text = 's:12:"hello "world";s:12:"good bue world";';
$pattern = "(.*:[0-9]+:\"(.*)\";.*)U";
preg_match_all($pattern,$text,$r);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.