[英]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.