PHP或Javascript - 查找特定字符串

时间:2013-04-28 02:53:43

标签: php javascript regex ereg

找到一个特定的字符串相对容易,但我不知道从哪里开始。我需要提取一个每次都不同的字符串,但具有相似的特征。

以下是我需要在段落中找到的一些示例字符串,无论是在开头,结尾还是在中间的某个位置。

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);

1 个答案:

答案 0 :(得分: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]匹配任何字符[a-z]

{1,2}但只匹配之前的1或2次

\.匹配文字.需要\作为转义,因为.是一个特殊字符

)结束捕获组

php和javascript都允许使用正则表达式。

要获得更好的直观表示,您可以查看此工具:http://www.debuggex.com/

如果您需要每个八位字节(作为匹配项),您可以在每个()周围添加更多括号[0-9][a-z]{1,2},然后单独存储这些八位字节。

另请注意,\d[0-9]相同,但我更喜欢后者,因为我觉得它更具可读性。