PHP中的递归正则表达式用法

 更新时间:2016年11月25日 15:49  点击:1847
什么时候会用到递归正则表达式呢? 当然是待匹配的字串中递归地出现某种模式时(貌似废话). 最经典的例子, 就是递归正则处理嵌套括号的问题了.

例子如下.

假设你的文本中包含了正确配对的嵌套括号. 括号的深度可以是无限层. 你想捕获这样的括号组.

恕我剧透, 标准答案是这样的:

 代码如下 复制代码

<?php
$string = "some text (a(b(c)d)e) more text";
if(preg_match("/(([^()]+|(?R))*)/",$string,$matches))
{
    echo "<pre>"; print_r($matches); echo "</pre>";
}
?>
其输出结果是:


 Array
(
    [0] => (a(b(c)d)e)
    [1] => e   
)

可见, 我们所需要的文本, 已经捕获到$matches[0]中了.

原理
现在思考原理.

上面的正则表达式中的关键点是(?R). (?R)的作用就是递归地替换它所在的整条正则表达式. 在每次迭代时, PHP 语法分析器都会将(?R)替换为”(([^()]+|(?R))*)“.

因此, 具体到上述的例子, 其正则表达式等价于:

 代码如下 复制代码

"/(([^()]+|(([^()]+|(([^()]+)*))*))*)/"

但是上面的代码只适合深度为3层的括号. 对于未知深度的括号嵌套, 就只好使用这种正则了:

 代码如下 复制代码

"/(([^()]+|(?R))*)/"

它不但能够匹配无限深度, 还简化了正则表达式的语法. 功能强大, 语法简洁.

现在来细看一下"/(([^()]+|(?R))*)/"是怎样匹配"(a(b(c)d)e)"的:

1."(c)"这部分被正则式 "(([^()]+)*)" 匹配. 请注意, (c) 其实就相当于整个递归的一个缩影, 麻雀虽小五脏俱全, 因此它用到了整个正则表达式.
换言之, 下一步中的(c), 可以使用(?R) 来匹配.
2.(b(c)d)的匹配过程为:
1."("匹配"(";
2."[^()]+"匹配"b";
3. (?R)匹配"(c)";
4."[^()]+"匹配"d";
5.")"匹配")".
根据上面的匹配原理, 不难理解为什么数组的第2个元素$matches[1]与'e'等价. 子串'e'是在最后一次匹配迭代中被捕获. 匹配过程中, 只有最后一次的捕获结果才会保存到数组中.

rex注: 关于这个特性, 可以自行尝试一下, 看看使用正则式([a-z]+[0-9]+)+来匹配字串abc123xyz890, 其捕获结果$1是什么. 注意, 其结果与 Left Longest 原理并不冲突.

如果我们只需要捕获 $matches[0], 可以这样做:

 代码如下 复制代码

 <?php
    $string = "some text (a(b(c)d)e) more text";
    if(preg_match("/((?:[^()]+|(?R))*)/",$string,$matches))
    {
        echo "<pre>"; print_r($matches); echo "</pre>";
    }
?>
产生的结果相同:


 Array
    (
     [0] => (a(b(c)d)e)
    )

所做的改动是捕获括号()改为非捕获捕获括号(?:)了.

还可以进一步完善为:

 代码如下 复制代码
 <?php
    $string = "some text (a(b(c)d)e) more text";
    if(preg_match("/((?>[^()]+|(?R))*)/",$string,$matches))
    {
        echo "<pre>"; print_r($matches); echo "</pre>";
    }
?>

这里我们用到了所谓的一次性模式(rex注: 余晟先生译的《精通正则表达式v3.0》中, 谓之”固化分组”. 可参考该书.) PHP手册也推荐只要条件允许, 就尽可能使用这种模式, 以便提升正则表达式的速度.

自己常用的一个手机号正则表达式,今天突然发现不可以验证18开头的手机,下面是我以前的验证函数。
 代码如下 复制代码

function funcMtel($str)//手机号码正则表达试
{
 return (preg_match("/(?:13d{1}|15[03689])d{8}$/",$str))?true:false;
}

测试

18678785887

返回为

false

原因分析,查看了发现上面正则只能验证以13,15开头的,自然18开头的是不可以用的

修改后

 代码如下 复制代码

function funcMtel($str)//手机号码正则表达试
{
 return (preg_match("/(?:1[3|4|5|8]d{1}|15[03689])d{8}$/",$str))?true:false;
}

测试

18678785887

返回为

true

这样就成功了,

总结经验:

像手机号这类都会不断更新号码段了,我们在写函数时把它写成公共函数,这样就可以解决这个问题了。

php中模拟POST提交数据的方法 有城要的朋友可参考一下。

1.通过curl函数

 代码如下 复制代码

$post_data = array();
$post_data['clientname'] = "test08";
$post_data['clientpasswd'] = "test08";
$post_data['submit'] = "submit";
$url='http://xxx.xxx.xxx.xx/xx/xxx/top.php';
$o="";
foreach ($post_data as $k=>$v)
{
    $o.= "$k=".urlencode($v)."&";
}
$post_data=substr($o,0,-1);
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_URL,$url);
//为了支持cookie
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$result = curl_exec($ch);

2.通过fsockopen

 代码如下 复制代码
$URL=‘http://xxx.xxx.xxx.xx/xx/xxx/top.php';
$post_data['clientname'] = "test08";
$post_data['clientpasswd'] = "test08";
$post_data['submit'] = "ログイン";
$referrer="";
// parsing the given URL
$URL_Info=parse_url($URL);
// Building referrer
if($referrer=="") // if not given use this script as referrer
$referrer=$_SERVER["SCRIPT_URI"];
 
// making string from $data
foreach($post_data as $key=>$value)
$values[]="$key=".urlencode($value);
 
$data_string=implode("&",$values);
// Find out which port is needed - if not given use standard (=80)
if(!isset($URL_Info["port"]))
$URL_Info["port"]=80;
// building POST-request:
$request.="POST ".$URL_Info["path"]." HTTP/1.1n";
$request.="Host: ".$URL_Info["host"]."n";
$request.="Referer: $referrern";
$request.="Content-type: application/x-www-form-urlencodedn";
$request.="Content-length: ".strlen($data_string)."n";
$request.="Connection: closen";
$request.="n";
$request.=$data_string."n";
$fp = fsockopen($URL_Info["host"],$URL_Info["port"]);
fputs($fp, $request);
while(!feof($fp)) {
    $result .= fgets($fp, 128);
}
fclose($fp);

其它的第三方插件

Snoopy 类(2)
sourceforge.net/projects/snoopy/

http://www.redalt.com/xref/trunk/nav.htm?wp-includes/class-snoopy.php.htm

HTTP类(1,2)

http://www.phpclasses.org/browse/download/1/file/5/name/http.php

PEAR HTTP_Request

http://pear.php.net/package/HTTP_Request

Popularity: 74%

curl参考

PHP中的CURL函数库(Client URL Library Function)

curl_close — 关闭一个curl会话
curl_copy_handle — 拷贝一个curl连接资源的所有内容和参数
curl_errno — 返回一个包含当前会话错误信息的数字编号
curl_error — 返回一个包含当前会话错误信息的字符串
curl_exec — 执行一个curl会话
curl_getinfo — 获取一个curl连接资源句柄的信息
curl_init — 初始化一个curl会话
curl_multi_add_handle — 向curl批处理会话中添加单独的curl句柄资源
curl_multi_close — 关闭一个批处理句柄资源
curl_multi_exec — 解析一个curl批处理句柄
curl_multi_getcontent — 返回获取的输出的文本流
curl_multi_info_read — 获取当前解析的curl的相关传输信息
curl_multi_init — 初始化一个curl批处理句柄资源
curl_multi_remove_handle — 移除curl批处理句柄资源中的某个句柄资源
curl_multi_select — Get all the sockets associated with the cURL extension, which can then be "selected"
curl_setopt_array — 以数组的形式为一个curl设置会话参数
curl_setopt — 为一个curl设置会话参数
curl_version — 获取curl相关的版本信息

curl_init()函数的作用初始化一个curl会话,curl_init()函数唯一的一个参数是可选的,表示一个url地址。
curl_exec()函数的作用是执行一个curl会话,唯一的参数是curl_init()函数返回的句柄。
curl_close()函数的作用是关闭一个curl会话,唯一的参数是curl_init()函数返回的句柄。

PHPExcel用法有需要的朋友可以参考一下。

PHPExcel下载地址:http://phpexcel.codeplex.com/

导入PHPExcel.php或者其他文件

 代码如下 复制代码

require_once 'PHPExcel.php'; 

////require_once'PHPExcel/Writer/Excel5.php';     // 用于其他低版本xls 

// or 

////require_once'PHPExcel/Writer/Excel2007.php'; // 用于excel-2007 格式 

// 创建一个处理对象实例 

$objExcel = new PHPExcel(); 

// 创建文件格式写入对象实例, uncomment 

////$objWriter = newPHPExcel_Writer_Excel5($objExcel);     // 用于其他版本格式  

// or 

////$objWriter = newPHPExcel_Writer_Excel2007($objExcel); // 用于2007 格式 

$objProps = $objExcel->getProperties ();

//设置创建者

$objProps->setCreator ( 'XuLulu');

//设置最后修改者

$objProps->setLastModifiedBy("XuLulu");

//描述

$objProps->setDescription("摩比班级");

//设置标题

$objProps->setTitle ( '管理器' );

//设置题目

$objProps->setSubject("OfficeXLS Test Document, Demo");

//设置关键字

$objProps->setKeywords ( '管理器' );

//设置分类

$objProps->setCategory ( "Test");

//工作表设置

$objExcel->setActiveSheetIndex( 0 );

$objActSheet = $objExcel->getActiveSheet ();

//单元格赋值   例:

$objActSheet->setCellValue ( 'A1', 'ID');

$objActSheet->setCellValue ( 'B1', 'HashCode');

$objActSheet->setCellValue ( 'C1', 'ModelName');

$objActSheet->setCellValue ( 'D1', 'IndexName');

 

$objActSheet->setCellValue('A1', '字符串内容');  // 字符串内容  

$objActSheet->setCellValue('A2', 26);            // 数值 

$objActSheet->setCellValue('A3', true);          // 布尔值 

$objActSheet->setCellValue('A4', '=SUM(A2:A2)'); // 公式

//自动设置单元格宽度   例:

$objActSheet->getColumnDimension('A')->setAutoSize(true);

//手动设置单元格的宽度   例:

//$objActSheet->getColumnDimension('A')->setWidth(10);

//导出的文件名

$outputFileName = iconv ( 'UTF-8', 'gb2312', 'XuLulu_'. time() . '.xlsx' );

 

//直接导出文件

$objWriter->save ( $outputFileName );

 

//文件直接输出到浏览器

header ( 'Pragma:public');

header ( 'Expires:0');

header ( 'Cache-Control:must-revalidate,post-check=0,pre-check=0');

header ( 'Content-Type:application/force-download');

header ( 'Content-Type:application/vnd.ms-excel');

header ( 'Content-Type:application/octet-stream');

header ( 'Content-Type:application/download');

header ( 'Content-Disposition:attachment;filename='. $outputFileName );

header ( 'Content-Transfer-Encoding:binary');

$objWriter->save ( 'php://output');

 

其他设置:

//显式指定内容类型  

$objActSheet->setCellValueExplicit('A5','847475847857487584',

PHPExcel_Cell_DataType::TYPE_STRING); 

//合并单元格  

$objActSheet->mergeCells('B1:C22'); 

//分离单元格  

$objActSheet->unmergeCells('B1:C22');

//得到单元格的样式

$objStyleA5 = $objActSheet->getStyle('A5');

//设置字体 

$objFontA5 = $objStyleA5->getFont(); 

 

$objFontA5->setName('Courier New'); 

$objFontA5->setSize(10); 

$objFontA5->setBold(true); 

$objFontA5->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE); 

$objFontA5->getColor()->setARGB('FF999999');  

//设置对齐方式

$objAlignA5 = $objStyleA5->getAlignment(); 

$objAlignA5->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT); 

$objAlignA5->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);

 

//设置边框 

$objBorderA5 = $objStyleA5->getBorders(); 

$objBorderA5->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN); 

$objBorderA5->getTop()->getColor()->setARGB('FFFF0000');// color 

$objBorderA5->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN); 

$objBorderA5->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN); 

$objBorderA5->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN); 

//设置填充颜色 

$objFillA5 = $objStyleA5->getFill(); 

$objFillA5->setFillType(PHPExcel_Style_Fill::FILL_SOLID); 

$objFillA5->getStartColor()->setARGB('FFEEEEEE'); 

 

//从指定的单元格复制样式信息. 

$objActSheet->duplicateStyle($objStyleA5,'B1:C22'); 

//************************************* 

 

//添加图片 

$objDrawing = new PHPExcel_Worksheet_Drawing(); 

$objDrawing->setName('ZealImg'); 

$objDrawing->setDescription('Image inserted byZeal'); 

 

$objDrawing->setPath('./zeali.net.logo.gif'); 

$objDrawing->setHeight(36); 

$objDrawing->setCoordinates('C23'); 

$objDrawing->setOffsetX(10); 

$objDrawing->setRotation(15); 

$objDrawing->getShadow()->setVisible(true); 

$objDrawing->getShadow()->setDirection(36); 

$objDrawing->setWorksheet($objActSheet); 

 

//添加一个新的worksheet 

 

$objExcel->createSheet(); 

$objExcel->getSheet(1)->setTitle('测试2'); 

//保护单元格 

$objExcel->getSheet(1)->getProtection()->setSheet(true); 

$objExcel->getSheet(1)->protectCells('A1:C22','PHPExcel');

 

PHPExcel在cakephp中应用:

在Vendors/下创建一个文件夹Excel,将PHPExcel的目录如下:

 在要调用的Controller下的方法写如下代码:

 代码如下 复制代码
App::import ( 'Vendor', 'Excel', array ('file' =>'PHPExcel.php' ) );

后,就可以实例化PHPExcel;具体跟以上情况一样。

(这只是其中的一种方法,还有其他一些方法!)

另:导出excel表格的还有其他一些形式,如php自带的函数fputcsv();也可以导出csv格式的表格。

举一个简单的date例子
 
我将使用echo命令把内容输出到我们的客户端(浏览器)。我将使用下面的代码做为基础代码。
 

 代码如下 复制代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <title>Getting started with dates in php5</title>
</head>
<body>
<?php
date_default_timezone_set('Asia/Shanghai');
echo "Today is ",date('l');
?>
</body>
</html>

 

你将在你的浏览器里看到如下的内容。

Today is Friday
这个函数输出星期几的文本格式。date函数至少需要一个字符参数(这个参数告诉我们怎样格式化当前日期)。

 

尝试不同的格式
 
如果你看了php手册中PHP date function,那么你将发现有很多格式化日期的方式。
 

 代码如下 复制代码
?<?php echo "Today is ",date('Y-m-d'); ?>

将得到

Today is 2012-08-17
 

有一些日期是很普遍地被使用,所以PHP提供了一些常量供你使用。举例,你可以使用Cookie获取到客户端日期。

 代码如下 复制代码
 <?php echo "Today is ",date(DATE_COOKIE); ?>

你将得到如下面的内容

Today is Friday, 17-Aug-12 11:34:38 CST
注意当使用常量的时候不要使用引号。

 

现在是什么时候?
 
如果你想要输出当前时间,你能使用date(不同格式化字符参数)。

 代码如下 复制代码
 <?php echo "The time is ",date('g:i:sa'); ?>

你将得到

The time is 11:39:59am
 

本地化你的时区
 
如果你发现以上的代码没有给出正确的时间,很有可能是因为你的服务器设置了与你本地不同的时区。你需要在服务器上指定时区,那么你用下面的代码:
 <?php date_default_timezone_set('Asia/Shanghai'); ?>
这个将设置中国上海时区。这是php5的函数(注意旧版本的php),有很多供你选择时区。如果你想永久生效,你可以修改你的php.ini文件。

 

获取其他时间
 
你经常需要其他时间,而不是现在的时间。当你用date()函数创建时间的时候,系统会使用Unix系统时间。这个时间表示从1970年1月1日 00:00:00 GMT(Unix 纪元时间),到现在的秒数。
 
为了详细说明怎样获取指定时间的日期,你可以提供秒数做为date(0函数的第二个参数。

 代码如下 复制代码
<?php echo "Today is ",date('Y-m-d', 1309133434); ?>

结果是:

Today is 2011-06-27
这个看起来没什么用途,但它意味着你能用date()函数做计算。这之前,你需要简单的创建一个时间戳。

 

创建时间戳
 
有很多创建时间戳的方式。我们能够使用mktime()函数得到我们需要的时间戳。
 

 代码如下 复制代码
<?php
    $mytime=mktime(9, 23, 33, 6, 26, 2011);
    echo "Today is ",date('Y-m-d g:i:sa', $mytime);
?>

得到的结果是:

Today is 2011-06-26 9:23:33am
 mktime()函数需要你依次传递小时,分钟,秒,月,日,年。这是获取时间戳的好的方式,但是有更酷的方式。

 

通过字符获取时间戳
 
你可以使用strtotime()函数获取时间戳,php把可读的字符转换成Unix时间戳。PHP在把字符转换成时间戳方面是相当灵活的,因此你可以插入各种各样的值来获取你想要的时间戳。
 
这是一个简单例子:

 代码如下 复制代码

<?php
    $mytime=strtotime("7:50pm June 26 2011");
    echo "Today is ",date('Y-m-d g:i:sa', $mytime);
?>
输出:

Today is 2011-06-26 7:50:00pm

 

PHP在解释字符方面是相当灵巧的,但不是完美的,因此,在你插入之前一定要测试你输入的字符。使用"english-like instructions"转化成需要的时间戳,这是一个非常不错的方式。你可以像下面这样做:

 代码如下 复制代码
$nextfriday=strtotime("next Friday"); //下周五
$nextmonth=strtotime("+1 Month"); //从今天开始计算一个月以后的时间
$lastchristmas=strtotime("-1 year dec 25"); //去年圣诞节

 

获取日期范围
 
strtotime返回的值被转换为数字,我们能够用这些数字做基础运算,我们可以用这些数字做很多非常有意思的事情。比如,你每周二需要教一门功课,为期16周,你想得到你教科时间。你能够做下面的事情。
 

 代码如下 复制代码

<?php
$startdate = strtotime('next Tuesday');
$enddate = strtotime('+16 weeks', $startdate);
$currentdate = $startdate;
echo '<ol>';
while($currentdate < $enddate):
    echo "t<li>", date('M d', $currentdate);
    $currentdate = strtotime('+1 week', $currentdate);
endwhile;
echo '</ol>';
?>

你将会得到如下的结果:


Aug 21
Aug 28
Sep 04
Sep 11
Sep 18
Sep 25
Oct 02
Oct 09
Oct 16
Oct 23
Oct 30
Nov 06
Nov 13
Nov 20
Nov 27
Dec 04

 

注意一下这行:$currentdate = strtotime("+1 week", $currentdate)。在这行,你会发现你需要指定一个时间戳做为第二个参数,strtotime将使用这个参数代替默认时间戳(今天),并进行运算。

 

到某一个日期的天数
 
使用计算器的时候,我们会试图去计算到某一天的天数。你很容易计算11月份第四个星期四的时间戳。
 

 代码如下 复制代码
$someday = strtotime("3 weeks thursday November 1");
$daysUtilDate = ceil(($someday - time())/60/60/24);
echo "There are ", $daysUtilDate, " until Thanksgiving";

首先,我们开始计算感恩节日期(11月1号之后的第一个星期四之后的第3个星期四),然后我们通过简单的算术,计算出感恩节到当前时间之间的天数。当我们进行比较运算的时候,我们可以使用time(),因为它返回,到当前时间的纪元秒数。

[!--infotagslink--]

相关文章

  • PHP正则表达式取双引号内的内容

    取双引号内的内容我们如果一个字符串中只有一个可以使用explode来获得,但如果有多个需要使用正则表达式来提取了,具体的例子如下。 写程序的时候总结一点经验,如何只...2016-11-25
  • 一个关于JS正则匹配的踩坑记录

    这篇文章主要给大家介绍了一个关于JS正则匹配的踩坑记录,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-04-13
  • PHP正则表达式之捕获组与非捕获组

    今天遇到一个正则匹配的问题,忽然翻到有捕获组的概念,手册上也是一略而过,百度时无意翻到C#和Java中有对正则捕获组的特殊用法,搜索关键词有PHP时竟然没有相关内容,自己试了一下,发现在PHP中也是可行的,于是总结一下,分享的同...2015-11-08
  • php 验证只能输入汉字、英语、数字的正则表达式

    正则表达式是一门非常有用的并且进行模糊判断的一个功能了,我们下面来看通过正则来验证输入汉字、英语、数字,具体如下。 收藏了正则表达式。可以验证只能输入数...2016-11-25
  • java正则表达式判断前端参数修改表中另一个字段的值

    这篇文章主要介绍了java正则表达式判断前端参数修改表中另一个字段的值,需要的朋友可以参考下...2021-05-07
  • 常用的日期时间正则表达式

    常用的日期时间正则表达式 下面收藏了大量的日期时间正则匹配函数,包括分钟,时间与秒都能达到。 正则表达式 (?n:^(?=d)((?<day>31(?!(.0?[2469]|11))|30(?!.0?2)|29(...2016-11-25
  • PHP正则表达式匹配验证提取网址URL实例总结

    网址规则是可寻的,所以我们可以使用正则表达式来提取字符串中的url地址了,下面一起来看看小编整理的几个PHP正则表达式匹配验证提取网址URL实例. 匹配网址 URL 的...2016-11-25
  • 正则表达式中两个反斜杠的匹配规则详解

    这篇文章主要介绍了正则表达式中两个反斜杠的匹配规则,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-05-07
  • JS中使用正则表达式g模式和非g模式的区别

    这篇文章给大家详细介绍了JS中使用正则表达式g模式和非g模式的区别,非常不错,具有参考借鉴价值,需要的朋友参考下吧...2017-04-03
  • JavaScript利用正则表达式替换字符串中的内容

    本文主要介绍了JavaScript利用正则表达式替换字符串中内容的具体实现方法,并做了简要注释,便于理解。具有一定的参考价值,需要的朋友可以看下...2017-01-09
  • C#正则表达式使用方法示例

    这篇文章主要介绍了C#正则表达式使用方法,大家参考使用...2020-06-25
  • 常用C#正则表达式汇总介绍

    c#正则表达式,用于字符串处理、表单验证等场合,实用高效。现将一些常用的表达式收集于此,以备不时之需。...2020-06-25
  • 一文秒懂python正则表达式常用函数

    这篇文章主要介绍了python正则表达式常用函数及使用方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-05-07
  • Idea使用正则表达式批量替换字符串的方法

    这篇文章给大家介绍了Idea使用正则表达式批量替换字符串的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧...2021-07-21
  • js正则学习小记之匹配字符串字面量

    关于匹配字符串问题,有很多种类型,今天讨论 js 代码里的字符串匹配,因为我想学完之后写个语法高亮练手,所以用js代码当作例子...2021-05-07
  • PHP正则表达式之捕获组与非捕获组

    今天遇到一个正则匹配的问题,忽然翻到有捕获组的概念,手册上也是一略而过,百度时无意翻到C#和Java中有对正则捕获组的特殊用法,搜索关键词有PHP时竟然没有相关内容,自己试了一下,发现在PHP中也是可行的,于是总结一下,分享的同...2015-11-08
  • C# 中使用正则表达式匹配字符的含义

    正则表达式的作用用来描述字符串的特征。本文重点给大家介绍C# 中使用正则表达式匹配字符的含义,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧...2020-06-25
  • Python验证的50个常见正则表达式

    这篇文章主要给大家介绍了关于利用Python验证的50个常见正则表达式的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-11
  • C#编程自学之运算符和表达式

    这篇文章主要介绍了C#运算符和表达式,这是自学C#编程的第五篇,希望对大家的学习有所帮助。...2020-06-25
  • PHP正则表达式过滤html标签属性(DEMO)

    这篇文章主要介绍了PHP正则表达式过滤html标签属性的相关内容,实用性非常,感兴趣的朋友参考下吧...2016-05-06