正则匹配之url的匹配

通过这几天的学习,已经对正则有所了解了。

下面动手写一个匹配url的正则吧。

<?php
$str="http://www.baidu.com";
$reg="/(http|https)\:\/\/www\.(.*?)\.(com|cn|org)/";
if(preg_match($reg,$str,$arr)){
    echo "URL:".$arr[0]."<br>";
    echo "协议:".$arr[1]."<br>";
    echo "网址:".$arr[2]."<br>";
    echo "域名:".$arr[3]."<br>";
    print_r ($arr);
}else{
    echo "Error";
}
 ?>输出:URL:http://www.baidu.com协议:http网址:baidu域名:comArray ( [0] => http://www.baidu.com [1] => http [2] => baidu [3] => com )
时间: 2024-12-14 18:12:13

正则匹配之url的匹配的相关文章

正则引擎在数据包匹配中的工程分析

匹配 常见的通用匹配算法有字符串匹配和正则匹配.字符串匹配常见的算法有Boyer-Moore算法.orspool算法.unday算法.MP算法.R算法.AC自动机.Boyer-Moore.Horspool.Sunday算法都是基于后缀数组的匹配算法,区别在于移动的方式不一样.MP是前缀匹配算法,R算法是hash匹配,AC自动机可以同时匹配多个pattern.正则匹配有两种NFA和DFA,都是基于有穷自动机.NFA支持回朔,DFA的效率比NFA高很多,但支持的情况受限. 正则引擎 正则引擎包括NF

js正则表达式 URL格式匹配详解

0.URL格式 protocol :// hostname[:port] / path / [;parameters][?query]#fragment [;parameters]没见过 这里就不做相关匹配了 1.代码及运行结果 'use strict'; { // URL地址匹配格式: protocol :// hostname[:port] / path / [;parameters][?query]#fragment // [;parameters]:这都没见过这东西,就不匹配了. let

正则介绍,创建、匹配Regex对象

1 前面的电话号码查找程序能工作,但是 使用了很多代码,做的事情却有限: isPhoneNumber()函数有17行,但只能查找一种电话号码模式.像415.555.4242或者(415)555-4242这样的电话号码格式,该怎么查? 如果电话号码有分机,例如415-555-4242 x99,该怎么查? 所以isPhoneNumber()函数在验证的时候会失败. 2 正则表达式,简称为regex,是文本模式的描述方法. 例如,\d 是一个正则表达式,表示一位数字字符,即任何一位0到9的数字. py

nginx匹配规则说明以及匹配的优先级

location 匹配规则语法规则 location [=|~|~*|^~] /uri/ { … } 模式    含义location = /uri    = 表示精确匹配,只有完全匹配上才能生效location ^~ /uri    ^~ 开头对URL路径进行前缀匹配,并且在正则之前.location ~ pattern    开头表示区分大小写的正则匹配location ~* pattern    开头表示不区分大小写的正则匹配location /uri    不带任何修饰符,也表示前缀匹配

使用 Ocelot 匹配路由的方法匹配路由

使用 Ocelot 匹配路由的方法匹配路由 Intro 之前我们在 Ocelot 网关的基础上自定义了一个认证授权的 Ocelot 中间件,根据请求的路径和 Method 进行匹配,找到对应的权限配置,并判断是否可以拥有访问资源的角色,如果没有则返回 401/403,如果有权限则转发到下游服务. 原来的匹配方式是首先根据请求路径和方法完全匹配,如果匹配不到则尝试使用正则匹配. 我们这次要做的就是将原来的正则匹配替换成 Ocelot 內部的路由匹配方式,这样我们在配置的时候就不再需要配置两套了,一

正则表达式话题 【正则表达式--递归匹配与非贪婪匹配 】

[出处:http://www.regexlab.com/zh/regtopic.htm] 引言 本文将逐步讨论一些正则表达式的使用话题.本文为本站基础篇之后的扩展,在阅读本文之前,建议先阅读正则表达式参考文档一文. 1. 表达式的递归匹配 有时候,我们需要用正则表达式来分析一个计算式中的括号配对情况.比如,使用表达式 "\( [^)]* \)" 或者 "\( .*? \)" 可以匹配一对小括号.但是如果括号 内还嵌有一层括号的话 ,如 "( ( ) )&q

hdu2255 奔小康赚大钱 km算法解决最优匹配(最大权完美匹配)

/** 题目:hdu2255 奔小康赚大钱 km算法 链接:http://acm.hdu.edu.cn/showproblem.php?pid=2255 题意:lv 思路:最优匹配(最大权完美匹配) km算法 模板来自:http://www.cnblogs.com/wenruo/p/5264235.html 如果是求最小权完美匹配,那么将所有权值取相反数,然后求得最大权,输出最大权的相反数即可. */ #include <iostream> #include <cstring> #

python 匹配从文本里面匹配相应的邮箱

#!coding=utf-8 import re import sys def compile_mail(file_path):     #匹配想要的邮箱,去除不想要的内容      address = re.compile( ''' (?![\w\d.+][email protected])  #去除不想要的邮箱 [\w\d.+]+   #匹配前缀     @        ([\w\d.]+\.)+  #匹配域名     com  #匹配结尾 ''', re.UNICODE | re.VER

shell 中 贪婪匹配 和 非贪婪匹配

举个栗子: v=jfedu.shiyiwen.com echo ${v%.*} 一个%为非贪婪匹配,即匹配最短结果.%从右到左进行非贪婪匹配,匹配什么呢? 匹配已 .*的字符. 那么当然是匹配到了.com 然后执行删除匹配到的字符.结果就是(这里的 "." 相当于定界符.而“*”是通配符) jfedu.shiyiwen echo ${v%%.*} 而这里执行贪婪匹配,即匹配最长结果就匹配到了 .shiyiwen.com 结果为 jfedu 这里在说一个 # 刚好和 %顺序相反而已,#是