2017-11-24 20 views
-2

私は簡単な質問がありますが、私にとっては難しいです。私は(PHPを置き換える使用して)このに文字列を置換する場合、私はそれだけを見つけることができますどのように文字列のbparam1='a';param2='b';param3='3';php regex string 'param1 =' a '; param2 =' b '; param3 =' 3 ';

を見つけるために

param1='a'; 
param2='b'; 
param3='3'; 

"/param2='(.*)';/is"

+3

あなたは 'param2'の値を検索する方法を求めていますか?あなたの質問を明確にしたいだけです。 '?'を '*'の後に追加するだけで、どちらのパターン修飾子も必要ないようです。 – mickmackusa

+0

はい。 btw、申し訳ありませんが、これは非常に基本的な正規表現だと思います。しかし、私は本当にそれを行うことはできません – plonknimbuzz

+0

私はそれを忘れてしまった。答えることができますか?私はそれを投票する。お返事ありがとうございました – plonknimbuzz

答えて

5

にこの意志をこの正規表現を使用します値に単一引用符がないと仮定して、全体の値を取得します。

/param2='\K[^']+/ 

Demo

あなたは(キャプチャグループを使用しないように\Kで)fullstringマッチを再起動しparam2='と一致し、その後、1以上の非単一引用符文字に一致します。彼らは正規表現の実行を遅くし、出力配列の膨らみを生成する可能性があるので、私は常に可能な限りグループをキャプチャしないようにします。

PHPの実装:( Demo

$string="param1='a';param2='b';param3='3'"; 

echo preg_match("/param2='\K[^']+/",$string,$out)?$out[0]:'No matches'; 

出力:

b 
+0

あなたの迅速なヘルプのおかげでミック。これは私の時間を節約します – plonknimbuzz

+1

私は以前に '\ K'に出くわしたことがなく、これがどのような魔法であるかを見なければなりませんでした。 "\ Kは、PHP 5.2.4以降のマッチスタートをリセットするために使うことができます。"私はちょうどそこにあったので、私はちょうど答えを再読することができたと思うが、なぜ簡単な方法を行う... –

+0

omg、私たちはこれを行うことができます私は知っている 'エコーpreg_match($正規、$文字列、$アウト)?$ out [0]: '一致するものはありません'; 'もう必要ないchecketet($ out [0])はもうありません。もう一度大きな感謝 – plonknimbuzz

関連する問題