一个根据正则匹配提取特定值的例子(当要找的两个关键字不相连时)
2012-08-30 23:35
465 查看
<?php
$str="两侧海马、颞上叶、顶叶及杏仁核明显萎缩,侧脑室扩张,脑沟裂增宽,额叶为著。其余脑实质内未见明确异常信号,中线结构居中。小脑、脑干未见明确异常信号hi。DWI及SWI 相颅内未见明确异常信号影。 海马高度 左侧0.397cm,右侧0.397cm(参考值0.6-0.8cm);脉络膜裂宽度 左侧0.198cm,右侧0.273cm(参考值0.1-0.2cm); 内嗅皮层厚度 左侧0.124cm,右侧0.19cm(参考值0.2cm);颞叶干宽度 左侧0.645cm,右侧0.62cm(参考值0.9-1.1cm)。侧裂池宽度
左侧0.670cm,右侧0.818cm。 2DHMRS(3.0T 短回波TE 32ms):海马total NAA/CR 2.454R 2.09L MI/CR 0.524R 0.55L 1.76R头NAA/CR 2.90R 2.21L MI/CR 0.45R 0.53L 体NAA/CR 2.37R 1.93L MI/CR 0.56R 0.51L 尾NAA/CR 1.74R 1.75L MI/CR 0.72R 0.56L 杏仁核 NAA/CR 2.3R 2.82L MI/CR 0.79R 0.71L。扣带回total
NAA/CR 3.098 MI/CR 0.697。
";
$st="海马total MI/NAA";
$st1="扣带回MI/CR";
$st2="侧裂池宽度";
$input=preg_match('/[A-Z]+.[A-Z]+/',$st1,$match,PREG_OFFSET_CAPTURE);
print_r($match);
echo "<br>";
if($input)
{
$strr=substr($st1,0,$match[0][1]);
//利用循环的思想
$strpos=0;
$max=strlen($str);
$yes=0;
while($strpos<$max)
{
$strco=substr($str,$strpos);
$strposs=strpos($strco,$match[0][0]);
if($strposs>100)
$strcop=substr($strco,$strposs-100,100);
else
$strcop=substr($strco,0,$strposs);
$strpos2=strpos($strcop,$strr);
if($strpos2!==false)
{
$strnum=substr($strco,$strposs,20);
preg_match_all('/\d+.\d+|d+/',$strnum,$matches);
$yes=1;
break;
}
else
$strpos=$strpos+$strposs+2;
}
if($yes)
{
print_r($matches);
echo $matches[0][0].'<br>'.$matches[0][1].'<br>';
}
else
echo "没找到<br>";
}
else
{
$strpos=strpos($str,$st2);
if ($strpos!==false)
{
$str=substr($str,$strpos,50);
$str=preg_match_all('/\d+.\d+|d+/',$str,$matches);
echo $matches[0][0].'<br>'.$matches[0][1].'<br>';
}
else
echo "没找到<br>";
}
另外,在检测一个字符串是否存在于另外一个字符串中时,为了排除空格的影响,可以使用str_replace()函数
一个例子:
$l="我是真的 很好 aineg eing";
echo "<br>".$l."<br>";
$s=str_replace(' ','',$l);
echo $s;
$str="两侧海马、颞上叶、顶叶及杏仁核明显萎缩,侧脑室扩张,脑沟裂增宽,额叶为著。其余脑实质内未见明确异常信号,中线结构居中。小脑、脑干未见明确异常信号hi。DWI及SWI 相颅内未见明确异常信号影。 海马高度 左侧0.397cm,右侧0.397cm(参考值0.6-0.8cm);脉络膜裂宽度 左侧0.198cm,右侧0.273cm(参考值0.1-0.2cm); 内嗅皮层厚度 左侧0.124cm,右侧0.19cm(参考值0.2cm);颞叶干宽度 左侧0.645cm,右侧0.62cm(参考值0.9-1.1cm)。侧裂池宽度
左侧0.670cm,右侧0.818cm。 2DHMRS(3.0T 短回波TE 32ms):海马total NAA/CR 2.454R 2.09L MI/CR 0.524R 0.55L 1.76R头NAA/CR 2.90R 2.21L MI/CR 0.45R 0.53L 体NAA/CR 2.37R 1.93L MI/CR 0.56R 0.51L 尾NAA/CR 1.74R 1.75L MI/CR 0.72R 0.56L 杏仁核 NAA/CR 2.3R 2.82L MI/CR 0.79R 0.71L。扣带回total
NAA/CR 3.098 MI/CR 0.697。
";
$st="海马total MI/NAA";
$st1="扣带回MI/CR";
$st2="侧裂池宽度";
$input=preg_match('/[A-Z]+.[A-Z]+/',$st1,$match,PREG_OFFSET_CAPTURE);
print_r($match);
echo "<br>";
if($input)
{
$strr=substr($st1,0,$match[0][1]);
//利用循环的思想
$strpos=0;
$max=strlen($str);
$yes=0;
while($strpos<$max)
{
$strco=substr($str,$strpos);
$strposs=strpos($strco,$match[0][0]);
if($strposs>100)
$strcop=substr($strco,$strposs-100,100);
else
$strcop=substr($strco,0,$strposs);
$strpos2=strpos($strcop,$strr);
if($strpos2!==false)
{
$strnum=substr($strco,$strposs,20);
preg_match_all('/\d+.\d+|d+/',$strnum,$matches);
$yes=1;
break;
}
else
$strpos=$strpos+$strposs+2;
}
if($yes)
{
print_r($matches);
echo $matches[0][0].'<br>'.$matches[0][1].'<br>';
}
else
echo "没找到<br>";
}
else
{
$strpos=strpos($str,$st2);
if ($strpos!==false)
{
$str=substr($str,$strpos,50);
$str=preg_match_all('/\d+.\d+|d+/',$str,$matches);
echo $matches[0][0].'<br>'.$matches[0][1].'<br>';
}
else
echo "没找到<br>";
}
另外,在检测一个字符串是否存在于另外一个字符串中时,为了排除空格的影响,可以使用str_replace()函数
一个例子:
$l="我是真的 很好 aineg eing";
echo "<br>".$l."<br>";
$s=str_replace(' ','',$l);
echo $s;
相关文章推荐
- 一个通用的php正则表达式匹配或检测或提取特定字符类
- 一个通用的php正则表达式匹配或检测或提取特定字符类
- 一个简单正则匹配的例子
- 一个匹配URL的正则表达式例子(带详细解释)
- js正则表达式 匹配两个特定字符间的内容
- java正则匹配字符串中不包含一个或几个特定的字符串
- js正则表达式 匹配两个特定字符间的内容示例
- 【学习python】re 正则表达式匹配特定词性的conll,提取句子主干(主谓宾)
- js正则表达式 匹配两个特定字符间的内容
- 设计一个脚本,根据关键字提取整段话中关键字所在的句子
- 使用正则表达式删除一个字符串中特定两个字符之间的所有字符
- 一个匹配 关键字="值" 的正则
- 正则表达式匹配的一个例子
- JS 的几个简单正则匹配例子和 mysql 的一个正则匹配例子
- 1.编写一个简单的C语言程序:根据输入的两个整数求平均值并且在终端输出,通过gcc编译器得到它的汇编程序文件。 2.编写一个C语言程序:打印输出所有“水仙花数”,用gdb调试程序(给出步骤)。所谓“
- sql查询时,根据特定的条件给表的某一个字段赋值
- Linux grep根据关键字匹配前后几行
- 使用“正则表达式”,匹配任意一个字符(中文,英文和标点或特殊字符)
- javaweb之Session简单例子(两个页面一个存数据,一个取数据)和session的一些基本内容
- 。一个最大逆向匹配分词算法的例子