正则表达式

正则表达式

末鹿安然 提交于 2019-12-18 01:23:53
1.正则表达式概述 1.1什么是正则表达式 正则表达式(Regula Expression)是用于匹配字符串中字符组合的模式。在JavaScript中,正则表达式也是对象。 正则表通常被用来检索、替换那些符合某个模式(规则)的文本吗,例如验证表单:用户名表单只能输入英文字母、数字或者下划线,昵称输入框中可以输入中文(匹配)。此外,正则表达式还常用语过滤掉页面内容中的一些敏感词(替换),或从字符串中获取我们想要的特定部分(提取)等。 主要利用JavaScript正则表达式完成表单验证。 1.2正则表达式的特点 1、灵活性、逻辑性和功能性非常的强。 2、可以迅速低用极简单的方式达到字符串的复杂控制。 2.正则表达式在JavaScript中的使用 2.1创建正则表达式 在JavaScript中,可以通过俩种方式创建一个正则表达式 1、通过调用RegExp对象的构造函数创建 var 变量名 = new RegExp(/表达式/) 2、通过字面量创建 var 变量名 = /表达式/; 2、测试正则表达式test test()正则对象方法,用于检测字符串是否符合该规则,该对象会返回true或false,其参数是测试字符串 regexObj.test(str) var rg = /123/; console.log(rg.test(123)); //返回结果为true console.log

正则基础

与世无争的帅哥 提交于 2019-12-17 23:19:20
爬虫一共四个步骤: 一是明确目标(要知道你准备在那个范围或者网站去搜索) 二是爬(将所有的网站内容全部爬下来) 三是取(去掉对我们没用的数据) 四是处理数据(按照我们想要的方式存储和使用) 正则表达式:对应文本的过滤或者规则的匹配 正则表达式又称规则表达式,通常被用来检索、替换那些符合 某个模式(规则)的文本 对字符串操作的一种逻辑公式,用定义好的特定字符及 特定字符组合的“规则字符串”,表达对字符串的一种过滤逻辑 原始字符串 只需在双引号前加“r”前缀 re模块的一般使用步骤: 使用compile()函数将正则表达式的字符串形式编译为一个Pattern 对象。通过Pattern对象提供的一系列方法对文本进行匹配查找, 获得匹配结果,一个Match对象。最后使用Match对象提供的属性和方法 获得信息,根据需要进行其他的操作。 正则表达式是由普通字符和特殊字符(元字符)组成的文字模式 文本:we are well Welcome 正则表达式:we 匹配所有的含有we的但是包括well welcome 正则表达式:\bwe\b 只匹配了we \b是正则表达式的特殊字符,称为元字符,匹配的是单词的开始 和结束,也就是单词的分界处。 compile函数 用于编译正则表达式,生成Pattern对象,它的一般使用形式: match 从起始位置开始查找,一次匹配 search

VC利用boost库解析正则表达式

眉间皱痕 提交于 2019-12-17 14:45:36
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> VC利用boost库解析正则表达式 最近做数据库涉及到解析sql语句,觉得最好的办法是写正则表达式解析,由于vc6没有解析函数,自己写又不甘心,后来从网上找到了boost库,解决了这个问题. boost下载地址:http://www.boost.org boost库安装比较麻烦,需要自己编译源文件,我整理了一下,如果仅仅需要做正则表达式,按下面的代码敲就行了. cmd vcvars32.bat cd D:/boost_1_32_0/libs/regex/build d: nmake -fvc6.mak nmake -fvc6.mak install 注意,别看下载下来的数据包没有多大,解压缩之后达到了100多M,编译完之后为109M,占用131M,所以安装时一定注意空出足够的空间,敲入nmake -fvc6.mak后等待的时间比较长,屏幕上还会出现一大堆英语,可以不做考虑.按照步骤往下敲就行了.压缩包内文档很详细,参照文档继续就可以了. 在VC6中集成:Tools->Options->Directories->Include files 加入:D:/boost_1_32_0 编写一个源程序测试一下: #include "stdafx.h" #include <cstdlib> #include <stdlib

正则表达式使用范例 Linux C++

安稳与你 提交于 2019-12-17 14:38:01
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> POSIX正则库使用 基本介绍: POSIX(Portable Operating System Interface of Unix) 是unix系统提供的系统级通用正则库。 四个主要接口:regcomp, regexec, regerror, regfree (可以通过man命令查询参数含义) 代码示例: #include<iostream> #include<string> #include<sys/types.h> #include<regex.h> #include<assert.h> using namespace std; int main(int argc, char** argv) { string pattern("([[:alnum:]]+):([[:digit:]]+)"); // ([a-z]+):([0-9]+) also works here regex_t regex; //compile int errcode = regcomp(&regex, pattern.c_str(), REG_EXTENDED | REG_NOSUB); char errbuf[128]; if (errcode != 0) { regerror(errcode, &regex, errbuf,

介绍 ATL CAtlRegExp,GRETA,Boost::regex 等正则表达式库

最后都变了- 提交于 2019-12-17 14:26:44
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 本文摘要翻译了几篇文章的内容,简单介绍 ATL CAtlRegExp,GRETA,Boost::regex 等正则表达式库,这些表达式库使我们可以方便地利用正则库的巨大威力,给我们的工作提供了便利。   正则表达式语法 字符元 意义 . 匹配单个字符 [ ] 指定一个字符类,匹配方括号内的任意字符。例:[abc] 匹配 "a", "b"或 "c"。 ^ 如果^出现在字符类的开始处,它否定了字符类,这个被否定的字符类匹配除却方括号内的字符的字符。如:[^abc]匹配除了"a", "b"和"c"之外的字符。如果^出现在正则表达式前边,它匹配输入的开头,例:^[abc]匹配以"a", "b"或"c"开头的输入。 - 在字符类中,指定一个字符的范围。例如:[0-9]匹配"0"到"9"的数字。 ? 指明?前的表达式是可选的,它可以匹配一次或不进行匹配。例如: [0-9][0-9]? 匹配"2"或"12"。 + 指明?前的表达式匹配一次或多次。例如:[0-9]+匹配"1", "13", "666"等。   * 指明*前的表达式匹配零次或多次。 ??, +?, *? ?, +和*的非贪婪匹配版本,它们尽可能匹配较少的字符;而?, +和*则是贪婪版本,尽可能匹配较多的字符。例如:输入"<abc><def>", 则<.*?>

C++新标准——C++1x

自作多情 提交于 2019-12-17 14:26:28
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 本文转自: http://liuyue.asia/2010/03/18/cpp0x-has-become-cpp1x/ 一个热爱 C++ 的程序员应该知道 C++0x 为何物吧。C++ 标准制定委员会曾在 1998 年和 2003 年制定和更新了 C++ 的标准,使 C++ 的编写更规范,功能也得到了提升。但是每次标准的制定后,委员会都会想着下一代的标准,C++ 的下一代就是 C++0x. 但是如今,C++0x 已然被拖成 C++1x. 这是很明显的,现在已经是 2010 了。最新的消息是,C++1x 会在 2010年末最终制定完成,但由于委员会还有一些问题要解决,该标准预计能在 2011 年成为正式标准,通俗地说就是成为 C++11, 说玄乎些也就是 ISO/IEC 14882:2011. 我想大家最感兴趣的是新标准里有些什么。由于这些标准大多数都是外国人定的,有关它的中文信息少之又少,国内对标准的制定也不是很有兴趣,网上见到的文章说的都是 200x 年的预测了,这些预测如今看来也没有多少应验的。目前我忙于准备高考,高考完后我想写一本有关新标准的书。 我认为,采用了新标准的 C++ 在运行效率上会类似 C, 在编写效率上将直逼 Java. 你可以和我争辩这个问题,我只想告诉你,C++ 的爹地说

Regex C++: 正则表达式(1)

∥☆過路亽.° 提交于 2019-12-17 14:15:37
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 自C++11起标准库提供了正则表达式库,允许我们使用 通配符 和 pattern 来 查找和替换 掉string中的字符. Match : 将整个string拿来匹配某个regex. Search : 查找某个string中与regex吻合的部分. Replace : 将与正则表达式吻合的第一个(或者后续所有的)子序列替换掉. Tokenize : 切分即通过指定来切分出来我们感兴趣的正则表达式匹配到的内容. 那么我们来看一个例子吧,先不用管正则表达式的文法: #include <iostream> #include <regex> #include <string> #include <utility> int main() { std::regex regOne("<.*>.*<.*>"); std::string str("<tg>value</tag>"); std::smatch resultOne; bool booleanOne = std::regex_match(str, resultOne, regOne); std::cout << std::boolalpha << booleanOne << std::endl; std::smatch resultTwo; bool

vs2008中使用正则表达式实例

一世执手 提交于 2019-12-17 14:15:23
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> vs2008中使用正则表达式实例 软件环境: Windows XP VS2008 1.为了使用正则表达式 需要添加ATL库,添加方式: 工具->选项->项目和解决方案->VC++ Directories Win32 && Include files 添加 C:/Program Files/ATL/include 2.#include "atlrx.h" 3. bool IsDate( const char *str) { CAtlRegExp<> reUrl; //正则表达式 REParseError status = reUrl.Parse(_T("^({[1-2][0-9][0-9][0-9]}{[-:/]}{[0-1]?[0-9]}{[-:/]}{[0-3]?[0-9]})$")); //未知错误 if (REPARSE_ERROR_OK != status) { return false; } CAtlREMatchContext<> mcUrl; //格式不匹配情况 if (!reUrl.Match(_T(str),&mcUrl)) { // Unexpected error. return false; } return true; } 4.说明:这是一个简单的实例 验证日期格式

VS2008中使用正则表达式库Boost.Regex

泪湿孤枕 提交于 2019-12-17 13:21:38
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> VS2008中使用正则表达式库Boost.Regex 2011-04-14 10:10 在VS2008中要使用Boost.Regex正则表达式库,首先需要在编译器中添加Boost的lib目录,否则编译将会出现如下错误提示: 1>------ 已启动生成: 项目: vs08, 配置: Debug Win32 ------ 1>正在编译... 1>vs08.cpp 1>正在链接... 1>LINK : fatal error LNK1104: 无法打开文件“libboost_regex-vc90-mt-sgd-1_44.lib” 1>生成日志保存在“file://e:\Do\vs08\vs08\Debug\BuildLog.htm” 1>vs08 - 1 个错误,0 个警告 ========== 生成: 成功 0 个,失败 1 个,最新 1 个,跳过 0 个 ========== 添加lib的方法: 方法1:依次点击“项目——配置属性——链接器——常规”,在“附加库目录”中加入lib所在目录。例如,我的机子上是:"C:\Program Files\boost\boost_1_44\lib"。 方法2:将libboost_regex-vc90-mt-sgd-1_44.lib复制到工程目录下,然后在代码中添加如下声明:

15 个实用的 PHP 正则表达式

谁都会走 提交于 2019-12-17 12:16:11
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 对于开发人员来说,正则表达式是一个非常有用的功能,它提供了 查找,匹配,替换 句子,单词,或者其他格式的字符串。这篇文章主要介绍了15个超实用的php正则表达式,需要的朋友可以参下。在这篇文章里,我已经编写了15个超有用 的正则表达式,WEB开发人员都应该将它收藏到自己的工具包。 验证域名检验一个字符串是否是个有效域名 $url = "http://komunitasweb.com/"; if (preg_match('/^(http|https|ftp)://([A-Z0-9][A-Z0-9_-]*(?:.[A-Z0-9][A-Z0-9_-]*)+):?(d+)?/?/i', $url)) { echo "Your url is ok."; } else { echo "Wrong url."; } 从一个字符串中 突出某个单词 这是一个非常有用的在一个字符串中匹配出某个单词 并且突出它,非常有效的搜索结果 $text = "Sample sentence from KomunitasWeb, regex has become popular in web programming. Now we learn regex. According to wikipedia, Regular expressions