正则表达式

java中的正则表达式

青春壹個敷衍的年華 提交于 2020-02-03 00:49:38
正则表达式是一种强大而灵活的文本处理工具。使用正则表达式,我们能够以编程的方式,构造复杂的文本模式,并对输入的字符串进行搜索。 一旦找到了匹配这些模式的部分,你就能够随心所欲地对它们进行处理。 0.0:为什么用正则表达式? 正则表达式定义了字符串的模式。 正则表达式可以用来搜索、编辑或处理文本。 1:基础知识 一般而言,正则表达式就是以某种方式来描述字符串。 例如,要找一个数字,它可能有一个负号在最前面,那你就写一个负号加上一个问号,就像这样: - ? 1.1:正则表达式中反斜杠的作用: 在其他语言中,\\表示“我想要在正则表达式中插入一个普通的(字面上的)反斜线,请不要给它任何特殊的意义。 ”而在Java中,\\ 的意思是 “ 我要插入一个正则表达武的反斜线,所以其后的字符具有特殊的意义。 ” (1) 例如,如果你想表示一位数字,那么正则表达式应该是 \\d 。 如果你想插入一个普通的反斜线,则应该这样 \\\\ 。 (2) 要表示 “一个或多个之前的表达式“,应该使用 + , 所以,如果要表示“可能有一个负号,后面跟着一位或多位数字”,可以这样: -? \\ d+ (3)正则表达式中, 括号有着将表达式分组的效果,而竖直线 | 则表示或操作 。 (-|\\+)? 这个正则表达式表示字符串的起始字符可能是一个 -或 +,或二者皆没有(因为后面跟着?修饰符)。 因为 字符 +

Java中的正则表达式(1)

人走茶凉 提交于 2020-02-03 00:48:05
正则表达式(Regular Expressions)可不是Java的专利,很多的语言像Perl,Python,PHP,Ruby等等都支持正则表达式,正则表达式是字符串处理的利器,它是一种描述字符串模式的式子,一个正则表达式的核心价值就是匹配一个字符串。各个语言实现的正则表达式引擎并不完全相同,Oreilly出版的《精通正则表达式》是讲解正则表达式的经典教程。这里只是总结下Java中的正则表达式的相关知识,Java中的正则表达式功能是通过java.util.regex包中的两个类来实现的:Pattern类,定义了封装了正则表达式的对象;Matcher类,它定义了封装了一个状态机的对象,这个状态机可以使用一个给定的Pattern对象搜索一个特定的字符串。这个包里还定义了PatternSyntaxException类,如果编译正则表达式创建Pattern对象时发现语法错误,将抛出异常。正则表达式也是个字符串,一般会把它封装到一个Pattern对象里,某些简单的情况下,完全可以不用regex包,只用String类的matches()就可以判断该字符串是否和正则表达式匹配。例如: "one piece".matches("one.*");//true 使用java中的正则式基本上很简单: (1)把一个包含正则表达式的字符串传给Pattern类的静态方法compile(

Ansible模块——blockinfile

孤街浪徒 提交于 2020-02-03 00:07:10
blockinfile 模块在指定的文件中插入”一段文本”,这段文本是被标记过的,也就是,在这段文本上做了记号,以便在以后的操作中可以通过”标记”找到这段文本,然后修改或者删除它。 一、常用参数 path :required,指定要操作的文件。 block :指定要操作的”一段文本”,此参数有一个别名叫”content”,使用content或block的作用是相同的。 marker :在指定文件中插入一段文本,ansible会自动为这段文本添加两个标记,一个开始标记,一个结束标记,默认情况下,开始标记为# BEGIN ANSIBLE MANAGED BLOCK,结束标记为# END ANSIBLE MANAGED BLOCK,使用marker参数自定义”标记”。比如,marker=#{mark}test ,这样设置以后,开始标记变成了# BEGIN test,结束标记变成了# END test。 state : state参数有两个可选值,present与absent,插入和删除对应标记的段落。 insertafter :在插入一段文本时,默认会在文件的末尾插入文本,如果你想要将文本插入在某一行的后面,可以使用此参数指定对应的行,也可以使用正则表达式(python正则),表示将文本插入在符合正则表达式的行的后面。如果有多行文本都能够匹配对应的正则表达式,则以最后一个满足正则的行为准

python_正则表达式_re模块

好久不见. 提交于 2020-02-02 22:29:28
正则表达式:对字符串进行筛选,查找对应的数据 #coding=utf-8 # 导入re模块 import re # 使用match方法进行匹配操作 result = re . match ( 正则表达式 , 要匹配的字符串 ) # 如果上一步匹配到数据的话,可以使用group方法来提取数据 result . group ( ) #coding=utf-8 import re result = re . match ( "hello" , "hello world" ) result . group ( ) 匹配单个字符 字符 功能 . 匹配任意1个字符(除了\n) [ ] 匹配[ ]中列举的字符 \d 匹配数字,即0-9 \D 匹配非数字,即不是数字 \s 匹配空白,即 空格,tab键 \S 匹配非空白 \w 匹配单词字符,即a-z、A-Z、0-9、_ \W 匹配非单词字符 #coding=utf-8 import re ret = re . match ( "." , "S" ) print ( ret . group ( ) ) ret = re . match ( "o.e" , "ooe" ) print ( ret . group ( ) ) ret = re . match ( "ww.o" , "wwwo" ) print ( ret . group ( ) ) [

正则表达式介绍

大兔子大兔子 提交于 2020-02-02 17:34:31
字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在。比如判断一个字符串是否是合法的Email地址,虽然可以编程提取 @ 前后的子串,再分别判断是否是单词和域名,但这样做不但麻烦,而且代码难以复用。 正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的。 所以我们判断一个字符串是否是合法的Email的方法是: 创建一个匹配Email的正则表达式; 用该正则表达式去匹配用户的输入来判断是否合法。 因为正则表达式也是用字符串表示的,所以,我们要首先了解如何用字符来描述字符。 在正则表达式中,如果直接给出字符,就是精确匹配。用 \d 可以匹配一个数字, \w 可以匹配一个字母或数字,所以: '00\d' 可以匹配 '007' ,但无法匹配 '00A' ; '\d\d\d' 可以匹配 '010' ; '\w\w\d' 可以匹配 'py3' ; . 可以匹配任意字符,所以: 'py.' 可以匹配 'pyc' 、 'pyo' 、 'py!' 等等。 要匹配变长的字符,在正则表达式中,用 * 表示任意个字符(包括0个),用 + 表示至少一个字符,用 ? 表示0个或1个字符,用 {n} 表示n个字符,用 {n,m} 表示n-m个字符: 来看一个复杂的例子

剑指offer 正则表达式匹配

吃可爱长大的小学妹 提交于 2020-02-02 05:40:59
题目 请实现一个函数用来匹配包括’.‘和’ ‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’ '表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab ac a"匹配,但是与"aa.a"和"ab*a"均不匹配 思路 (动态规划) 建立dp[i][j]数组 代表是str前i个能否被pattern[j]个匹配 首先初始化dp数组的第一行,当前是与空字符串匹配。 2.1 首先想到两个都是空的时候,是匹配的,dp[0][0]=true; 2.2 若pattern不为空,则分类讨论 若pattern[j] !=’ * ',一定是不匹配的 若pattern[j] == ’ * ',那么就存在p[j-1]p[j]这两个模式串使用0次,也可以匹配。 如a* 则可以等于“ ”,所以可以匹配。 开始比较str和pattern字符串 3.1 若pattern[j] == ‘.’||pattern[j]== str[i]:当前匹配成功 3.2 如果p[j] == ‘*’:需要进一步分情况讨论。 若pattern== '.'或者pattern[j-1] == str[i],则pattern[j-1]pattern[j]这两个模式串可以使用1到无数次,匹配成功 若pattern[j-1] != '.'和pattern

学习进度01

蓝咒 提交于 2020-02-01 22:15:36
python爬虫学习: https://www.cnblogs.com/vvlj/p/9580423.html #四个步骤 1.查看crawl内容的源码格式 crawl的内容可以是 url(链接),文字,图片,视频 2.请求网页源码        (可能要设置)代理,限速,cookie 3.匹配            用正则表达式匹配 4.保存数据          文件操作 #两个基本工具(库) 1.urllib https://www.cnblogs.com/duxie/p/10023732.html 2.requests https://www.cnblogs.com/duxie/p/10024919.html #这是一个成功的爬取豆瓣读书的例子: import urllib.request import re url="https://book.douban.com/" headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'} req = urllib.request.Request(url=url,headers=headers) response = urllib.request.urlopen(req) pattern =

Python正则总结

流过昼夜 提交于 2020-02-01 18:25:31
正则基本语法 元字符 元字符 描述 示例 匹配 . 句号匹配任意单个字符除了换行符。 a.c abc adc [ ] 字符种类。匹配方括号内的任意字符。 [Tt]he The the [^ ] 否定的字符种类。匹配除了方括号里的任意字符 [^Tt]he xhe * 匹配*号之前的字符大于等于0次。 abc* ab abccc + 匹配+号之前的字符大于等于1次。 abc+ abc abcc ? 匹配?号之前的字符0或1次. abc? ab abc {n,m} 匹配之前的字符重复n到m次, {n} 重复n次, {n,} 重复n次或更多次 ab{1,2}c abc abbc (xyz) 分组,匹配与 xyz 完全相等的字符串. (abc){2} abcabc | 或运算符,匹配符号前或后的字符. (ab|bc){2} abab bcbc \ 转义字符,用于匹配一些保留的字符 [ ] ( ) { } . * + ? ^ $ \ | \\abc \abc ^ 从开始行开始匹配. ^abc abc $ 从末端开始匹配. abc$ abc 简写字符集 简写 描述 示例 匹配 \w 匹配所有字母数字,等同于 [a-zA-Z0-9_] a\wc abc aBc \W 匹配所有非字母数字,即符号,等同于: [^\w] a\Wc a.c \d 匹配数字: [0-9] a\dc a2c \D 匹配非数字

正则表达式的理解

杀马特。学长 韩版系。学妹 提交于 2020-02-01 14:53:27
1 正则表达式主要两种类型 1.1 名词:代表是什么,用[]表示,如: [a] 代表a字母, [ab] 代表a或b字母, [0-9] 代表0到9,还有一些简写形式,如: \w 代表 [a-zA-Z0-9_] 字母数字或者下划线, \d 代表 [0-9] 数字, \D 代表 \[^0-9\] 非数字, \s 代表 [ \f\n\r\t\v] 可见字符, . 代表任意字符。 1.2 量词:代表个数, {n} 代表有n个, {n,m} 代表有n到m个, {n,} 代表>=n个, {,m} 代表<=m个,还有一些简写形式,如: * 代表 {0,} 任意个, + 代表 {1,} 至少有一个, ? 代表 {0,1} 代表最多有一个。 1.3 正则表达式翻译方法: [abc]{n,m} => 有n到m个'a'或'b'或'c' ,如果名词只有一个可以省略[],如果只需要一个可以省略量词。 import re def printRes ( res ) : if res : print ( res . group ( ) ) else : print ( "No match" ) def main ( ) : str = "abc123123qwe" reg = re . compile ( r "123" ) # 一个(123) # search是匹配首个结果 result = reg .

Python3 正则表达式

故事扮演 提交于 2020-02-01 08:28:49
Python3 正则表达式 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。 Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。 re 模块使 Python 语言拥有全部的正则表达式功能。 compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。 re 模块也提供了与这些方法功能完全一致的函数,这些函数使用一个模式字符串做为它们的第一个参数。 本章节主要介绍 Python 中常用的正则表达式处理函数 re.match函数 re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。 函数语法 : re.match(pattern, string, flags=0) 函数参数说明: 参数 描述 pattern 匹配的正则表达式 string 要匹配的字符串。 flags 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。 匹配成功re.match方法返回一个匹配的对象,否则返回None。 我们可以使用group(num) 或 groups() 匹配对象函数来获取匹配表达式。 匹配对象方法 描述 group(num=0) 匹配的整个表达式的字符串,group()