簡體   English   中英

運行正則表達式-需要找到出現字符串模式的確切位置

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

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