[英]Running a regular expression - need to find exact location of a string patterns occurrence
這是先前問題的跟進。
正則表達式的效果非常好,但是我需要能夠找到模式出現的確切位置。 例如,如果我的正則表達式要從以下字符串中提取子字符串“ bob”的實例:
This is abobsled
我還想知道字符串中第一次出現的模式的確切字符位置,即在這種情況下,它在第10個字符位置-這可能嗎? 我在這里使用php。
=========================
謝謝,我想我還是被卡住了-目前,這是我想要做的。 可以說我有一個這種性質的模板:
Hello <=name=>
Take Care
From <=sender=>
現在就很容易了,因為所有細節都是一個詞,但是如果要替換標簽的數據擴展到多行,我想將其設置為sup,這樣它就可以像現在使用的正則表達式一樣保留一些格式,如果我使用它來替換用多數民眾贊成的東西標記我得到以下內容:
Numbers: <=numbers=>
變成
Numbers: number1
number2
當我想要類似的東西時:
Numbers: Number1
Number2
我怎樣才能做到這一點 :(
請參閱:在http://docs.php.net/preg_match_all和/或http://docs.php.net/preg_match中標記PREG_OFFSET_CAPTURE
例如
<?php
$subject = 'This is abobsled';
preg_match('/b.b/', $subject, $m, PREG_OFFSET_CAPTURE);
var_dump($m)
版畫
array(1) { [0]=> array(2) { [0]=> string(3) "bob" [1]=> int(9) } }它從0開始計數,因此第10個字符位於位置9。
您可以使用相同的正則表達式並考慮位置。
例如:
function replace_content($tag,$position, $multiline)
{
$out='Number 1';
$padding=implode('',array_fill(0,$position, ' '));
if ($multiline)
{
$out.="\n".$padding.'Number 2';
// etc..
}
return $out
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.