正则表达式

如何使用正则表达式提取子字符串

爱⌒轻易说出口 提交于 2020-02-27 22:00:51
我有一个字符串,其中有两个单引号 ' 字符。 在单引号之间是我想要的数据。 如何编写正则表达式从以下文本中提取“我想要的数据”? mydata = "some string with 'the data i want' inside"; #1楼 您不需要正则表达式。 将apache commons lang添加到您的项目( http://commons.apache.org/proper/commons-lang/ ),然后使用: String dataYouWant = StringUtils.substringBetween(mydata, "'"); #2楼 有一个简单的方法: String target = myData.replaceAll("[^']*(?:'(.*?)')?.*", "$1"); 通过使匹配组为可选,这还可以通过在这种情况下返回空白来解决找不到引号的问题。 观看 现场演示 。 #3楼 String dataIWant = mydata.split("'")[1]; 观看 现场演示 #4楼 String dataIWant = mydata.replaceFirst(".*'(.*?)'.*", "$1"); #5楼 如在javascript中: mydata.match(/'([^']+)'/)[1] 实际的正则表达式为: /'([^']+)'/

正则表达式

删除回忆录丶 提交于 2020-02-27 18:20:40
密码: 1.至少8-16个字符,至少1个大写字母,1个小写字母和1个数字,其他可以是任意字符: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[^]{8,16}$/ 2. 至少8个字符,至少1个字母,1个数字和1个特殊字符: ^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{8,}$ 来源: oschina 链接: https://my.oschina.net/u/4136962/blog/3163750

学习笔记 网络爬虫篇之 [数据清洗]

寵の児 提交于 2020-02-27 18:19:48
文章目录 一、XPath语法和lxml模块 1.Xpath语法 1.1 什么是XPath? 1.2 XPath开发工具 1.3 XPath语法 选取摘要: 谓语: 通配符 选择多个路径: 二、lxml库 1、基本使用: 2、在lxml中使用XPath语法: 2.1 获取所有li标签: 2.2 获取所有li元素下的所有类属性的值: 2.3 获取li标签下href为www.baidu.com的a标签: 2.4 获取li标签下所有span标签: 2.5 获取li标签下的a标签里的所有类别: 2.6 获取最后一个li的a的href属性对应的值: 2.7获取倒数第二个li元素的内容: 2.8 获取倒数第二个li元素的内容的第二种方式: 使用requests和xpath爬取电影天堂 三、BeautifulSoup4库 1、`BeautifulSoup4`库 2、几大解析工具对比: 2.1 简单使用: 2.2 四个常用的对象: 2.2.1 Tag: 2.2.2 NavigableString: 2.2.3 BeautifulSoup: 2.2.4 Comment: 3.遍历文档树: 3.1 contents和children: 3.2 strings 和 stripped_strings 4.搜索文档树: 4.1 find和find_all方法: 4.2 select方法: 四

正则表达式-python

倖福魔咒の 提交于 2020-02-27 18:18:56
正则表达式是一个特殊的字符序列,一个字符串是否与我们所设定的 这样的字符序列相匹配 快速检索文本、实现一些替换文本的操作 1.检查一串数字是否是电话号码 2.检测一个字符串是否符合Email 3.把一个文本里指定的单词替换为另一个单词 #查找字符串 re.findall import re a='C7C++5Java8C#2python0Javascript' #检测字符串中的指定字符 r=re.findall('python',a)#正则表达式,检测a中是否有字符串python if len(r)>0 print('字符串中包含python') else: print('NO') #检索字符串a中所有数字 r=re.findall('\d',a)#元字符'\d'表示数字0-9, print(r) #检测字符串中的非数字 r=re.findall('\D',a)#元字符'/D'表示非数字 print(r) s='abc,acc,adc,aef,afc,ahc' #抽象字符集 r=re.findall('a[cf]c',s)#抽象c或f,得出acc或afc print(r) re=re.findall('a[^cf]c',) #概括字符集 r=re.findall('\w',a)#\w匹配所有数字和字母 print(r) re=re.findall('\s',a)#\s匹配空白字符

正则表达式总结

故事扮演 提交于 2020-02-27 16:30:46
一、什么是正则 正则是匹配特定格式文本的一种模式。 一句话: 正则表达式为匹配文本的一组标记符. 说白了,就是一些字符( 元字符),匹配了多少次(重复),在哪里(位置)匹配的范式. 有几个关键字:元字符,重复,位置 二、元字符 一句话:对于以元字符转为大写为最反义,字符组中加“^”取反义,元字符本身需转义 表1.常用的元字符 代码 说明 . 匹配除换行符以外的任意字符 \w 匹配字母或数字或下划线或汉字 \s 匹配任意的空白符 \d 匹配数字 \b 匹配单词的开始或结束 ^ 匹配字符串的开始 $ 匹配字符串的结束 反义 有时需要查找不属于某个能简单定义的字符类的字符。比如想查找除了数字以外,其它任意字符都行的情况,这时需要用到反义: 表2.常用的反义代码 代码/语法 说明 \W 匹配任意不是字母,数字,下划线,汉字的字符 \S 匹配任意不是空白符的字符 \D 匹配任意非数字的字符 \B 匹配不是单词开头或结束的位置 [^x] 匹配除了x以外的任意字符 [^aeiou] 匹配除了aeiou这几个字母以外的任意字符 字符转义 如果你想查找元字符本身的话,比如你查找.,或者*,就出现了问题:你没办法指定它们,因为它们会被解释成别的意思。这时你就得使用\来取消这些字符的特殊意义。因此,你应该使用\.和\*。当然,要查找\本身,你也得用\\. 例如:unibetter\

正则表达式

安稳与你 提交于 2020-02-27 15:30:25
1.目的:定义字符串的组成规则。 2.定义单个字符串的规则 单词字符: \w 元字符用于查找单词字符。 单词字符包括:a-z、A-Z、0-9,以及下划线, 包含 _ (下划线) 字符。 整数:\d [0-9] 3. 定义字符的个数 { m,n} 表示 m<= 数量 <= n * m如果缺省: {,n}:最多n次 * n如果缺省:{m,} 最少m次 4.创建正则表达式对象 1. var reg = new RegExp(“正则表达式”); 2. var reg = /正则表达式/; 5.方法test test(参数):验证指定的字符串是否符合正则定义的规范 6. 开始结束符号 * ^:开始 * $:结束 来源: CSDN 作者: qq_42731393 链接: https://blog.csdn.net/qq_42731393/article/details/104536315

Linux_正则表达式

廉价感情. 提交于 2020-02-27 14:18:05
Linux 文章目录 Linux 1. 正则表达式分类 2. 基本正则表达式 3. 扩展正则表达式 1. 正则表达式分类 正则表达式:REGEXP,REGular EXPression。 正则表达式分为两类: Basic REGEXP(基本正则表达式) Extended REGEXP(扩展正则表达式) 2. 基本正则表达式 //元字符 . //任意单个字符 [] //匹配指定范围内的任意单个字符 [^] //匹配指定范围外的任意单个字符 //匹配次数(贪婪模式) * //匹配其前面的任意单个字符任意次 .* //任意长度的任意字符 \? //匹配其前面的任意单个字符1次或0次 \+ //匹配其前面的任意单个字符至少1次 \{m,n\} //匹配其前面的任意单个字符至少m次,至多n次 //位置锚定 ^ //锚定行首,此字符后面的任意单个字符必须出现在行首 $ //锚定行尾,此字符前面的任意单个字符必须出现在行尾 ^$ //空白行 \<或\b //锚定词首,其后面的任意单个字符必须作为单词首部出现 \>或\b //锚定词尾,其前面的任意单个字符必须作为单词尾部出现 /分组 \(\) 例:\(ab\)* //后向引用 \1 //引用第一个左括号以及与之对应的右括号所包括的所有内容 \2 //引用第二个左括号以及与之对应的右括号所包括的所有内容 3. 扩展正则表达式 //字符匹配 . /

Java:正则表达式匹配

不想你离开。 提交于 2020-02-27 09:33:56
这里只讨论通配符 ‘ * ’ 和 ‘ ?‘ 的情况? 1. 当前字符是 “ * ” 的时候,表示可以匹配 0 至任意个字符 2. 当前字符是 “ ?“ 的时候,表示可以匹配 0 或者 1 个字符 3. 解题思路就是当遇到通配符的时候。利用回溯的思想解决 代码如下: public class Pattern { private boolean matched = false; private char[] pattern; private int pLen; public Pattern(char[] pattern, int pLen){ this.pattern = pattern; this.pLen = pLen; } // 匹配函数 public boolean match(char[] text, int tLen){ matched = false; rematch(0, 0, text, tLen); return matched; } // 匹配的过程 public void rematch(int ti, int pj, char[] text, int tLen){ if(matched) return; if(pj == pLen){ if(ti == tLen){ matched = true; return; } } // 当前字符为 ’*‘ if

正则表达式匹配两个字符串之间的所有字符

蹲街弑〆低调 提交于 2020-02-27 02:01:38
示例:“这只是一个简单的句子”。 我想匹配“这是”和“句子”之间的每个字符。 换行符应忽略。 我找不到正确的语法。 #1楼 使用这个: (?<=beginningstringname)(.*\\n?)(?=endstringname) #2楼 需要惰性量词 重新提出这个问题,因为接受的答案中的正则表达式对我而言似乎不太正确。 为什么? 因为 (?<=This is)(.*)(?=sentence) 会匹配 my first sentence. This is my second my first sentence. This is my second This is my first sentence. This is my second sentence. This is my first sentence. This is my second sentence. 参见演示 。 您需要在两种环视之间使用惰性的量词。 添加 ? 使星星懒。 这符合您的要求: (?<=This is).*?(?=sentence) 参见演示 。 我删除了捕获组,这不是必需的。 DOTALL模式以匹配整个换行符 请注意,在演示中,设置了“点匹配换行模式”(aka)点全名(请参阅 如何以各种语言打开DOTALL )。 在许多正则表达式中,您可以使用在线修饰符 (?s) ,将表达式转换为: (?s)(?<

13.python内置模块之re模块

做~自己de王妃 提交于 2020-02-27 01:58:01
什么是正则? 正则表达式也称为正则,是一个特殊的字符序列,能帮助检查一个字符串是否与某种模式匹配。可以用来进行验证:邮箱、手机号、qq号、密码、url = 网站地址、ip等。正则不是python语言独有的技术,python语言直到1.5版本才将正则表达式完成的整理/纳入进re模块中,我们只需要导入re模块,然后就可以使用其中所有和正则相关的函数和属性了。 1. re 模块中最常用的几 个函数 1). re.match函数: 功能: 将string数据从头开始尝试匹配 ;如果匹配成功,那么就会返回给程序一个 match对象 ;如果开头就不匹配,那么直接返回None值; 语法格式: re . match ( regex , string[ , flags = 0] ) 参数: regex:匹配的正则表达式(内部定义了一套验证规则) string:需要被验证的字符串数据 flags:可选参,模式/标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。默认情况下(不显示定义) --> 不开启任何的模式 【注意】匹配成功re.match方法返回一个 匹配的对象 ,否则返回None。我们可以使用group(num) 或 groups() 等匹配对象函数来获取 匹配表达式 。match对象有5个常用的函数: (1). group(): 返回匹配成功的数据值(理解