簡體   English   中英

如何在PHP中獲得正則表達式(PCRE)的結束位置?

[英]How to get the end position of a regex (PCRE) in PHP?

我將matchs optionnal參數與PREG_OFFSET_CAPTURE標志一起使用。 我得到了起始偏移量和匹配的表達式...。我找不到像Java Regexes中那樣獲得匹配表達式的結尾的選項。 有沒有解決方案,或者我的最后選擇是:offset + strlen(matching_string)?

只需將(.)放在正則表達式的末尾,並獲取捕獲的偏移量;)

您可以匹配\\G這是上一個匹配之后正則表達式引擎的位置。

但是,我發現這比您的“最后手段”更好。 那有什么不好的呢?

如果PHP像Perl一樣,則所有匹配項都應該有幾個偏移量數組。

在Perl中,其@-和@ + ..索引1 ..是捕獲組偏移量。 索引0是總的匹配偏移量。

if ('012345678' =~ /4/ ) {
    print "Match start = $-[0], match end = $+[0]\n";
}

打印Match start = 4, match end = 5

我有類似的問題,但我無法使用

 strlen(matching_string)

原因是匹配的字符串是帶有可變數量字符的正則表達式。

相反,我使用了preg_replace匹配的字符串並從那里開始工作。

我猜它類似於@NikiC的建議,但是花了我一段時間才弄清楚。

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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