簡體   English   中英

如何在PHP的同一個正則表達式中使用匹配項?

[英]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}的支持。

根據php.net

但是我認為這只能用於再次匹配找到的模式,而不能用作量詞中的數字。 (至少我沒有使其工作。)

您可以使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM