正则表达式的几个简单题目

什么是正则表达式

正则表达式也叫做模式表达式,本身有着自身的一套语法体系,并不是某个编程独有的产物。

正则表达用来什么
正则表达式能够直观的字符串进行处理,包括匹配、查找、替换等,能够做到比str_replace()等函数更高级的处理模式。

正则表达式怎么用
前面说到正则表达式有一套自己独有的语法,于是在网上找到了这么一篇PHP正则表达式笔记与实例详解非常的详细了,足够入门使用了。

那么来做下面几道小题

请编写一个正则表达式,要求能把以下这四种格式字符串:“$200.49”、“$1,999.00”、“$99”、“50.00美元”从一段文本中匹配出来。

$str = "$6asd$10,332,222.44bbb$10,324.00ss$123";
preg_match_all("/\\$[0-9]+(\,?[0-9])*(\.[0-9]*)?/",$str,$res);
$res = $res[0];
echo "原始字符串 : {$str}
提取结果如下:
"
; foreach($res as $arr){ echo $arr.'
'
; }

在上题目的基础上,要求考虑欧元及人民币/美元的不同的千位分隔符的不同。要求兼容:欧元、人民币两种货币,及两种货币符号。
EUR1.409,00 ===> 1409
€409,05 ===> 409.05
¥409.50 ===> 409.5
CNY1,000.00 ===> 1000

class main{
 public function index(){
  $str = 'EUR1.409,00xzsd €409,05 nnnn¥409.50zzzCNY1,000.00';
  preg_match_all("/(EUR|\\€|CNY|\¥)[0-9]*(\.?[0-9])*(\,?[0-9]*)(\.?[0-9])*/",$str,$res);//提取金钱信息
  $res = $res[0];
  echo "原始字符串 : {$str}
提取结果如下:
"
; foreach($res as $arr){ if(strpos($arr,'CNY') !== false){ $explode = explode('CNY',$arr); $this->getCNY($arr,$explode[1]); } if(strpos($arr,'¥') !== false){ $explode = explode('¥',$arr); $this->getCNY($arr,$explode[1]); } if(strpos($arr,'€') !== false){ $replace = str_replace('€','',$arr); $this->getEUR($arr,$replace); } if(strpos($arr,'EUR') !== false){ $replace = str_replace('EUR','',$arr); $this->getEUR($arr,$replace); } } } public function getCNY($arr,$string){ $money = preg_replace('/\,/','',$string); $resMoney = floatval($money); echo "{$arr} ===> {$resMoney}
"
; } public function getEUR($arr,$replace){ $replace = str_replace('.','',$replace); $replace = str_replace(',','.',$replace); $resMoney = floatval($replace); echo "{$arr} ===> {$resMoney}
"
; } } $main = new main(); $main->index();

你可能感兴趣的:(正则表达式的几个简单题目)