-1

特定の文字列を見つけるのは比較的簡単ですが、どこから始めればよいかわかりません。毎回異なるが、同様の特性を持つ文字列を抽出する必要があります。

段落の最初、最後、または途中で見つける必要がある文字列の例を次に示します。

7b.9t.7iv.4x

4ir.4i.5i.6t

7ix.7t.4t.0z

ご覧のとおり、文字列は常に数字で始まり、その後に最大 2 文字が続き、ドットで区切られた 4 つのオクテットが常に含まれます。

詳細が必要な場合はお知らせください。

編集:

以下の回答のおかげで、私はこれを思いつきましたが、きれいではありませんが、必要なことを行います。

$body="test 1f.9t.7iv.4x test 1a.9a.7ab.4xa test ";

$var=preg_match_all("([0-9][a-z]{1,2}\.[0-9][a-z]{1,2}\.[0-9][a-z]{1,2}\.[0-9][a-z]{1,2})",$body,$matches);

$count=count($matches[0]);
$stack = array();
while($count > 0){
  $count--;
  array_push($stack, "<span id='ip_".$matches[0][$count]."'>".$matches[0][$count]."</span>");
}
$stack=array_reverse($stack);
$body=str_replace($matches[0],$stack,$body);
4

1 に答える 1

4

正規表現を使用できます。

あなたが始めるためにこのような何か。繰り返すのでもっと合わせ方があるかもしれませんが…。

([0-9][a-z]{1,2}\.[0-9][a-z]{1,2}\.[0-9][a-z]{1,2}\.[0-9][a-z]{1,2})

(キャプチャ グループを開始する

[0-9]0 から 9 までの任意の文字に一致

[a-z]任意の文字 [az] に一致

{1,2}ただし、前の 1 回または 2 回のみに一致します

\.は特殊文字であるため、エスケープとして必要なリテラル. に一致します\.

)キャプチャ グループの終了

php と javascript の両方で、正規表現を使用できます。

さらに優れた視覚的表現については、次のツールをチェックしてください: http://www.debuggex.com/

各オクテットが (一致として) 単独で必要な場合は、() それぞれ[0-9][a-z]{1,2}に括弧を追加して、それらのオクテットを個別に保存することができます。

また、これ\dは と同じですが、[0-9]後者の方が読みやすいので、後者を好みます。

于 2013-04-28T03:06:21.090 に答える