正则表达式

LeetCode.10.正则表达式匹配

≡放荡痞女 提交于 2020-02-27 01:03:07
这个比较困难,我参考了网上的代码: https://leetcode-cn.com/problems/regular-expression-matching/solution/di-gui-dong-tai-gui-hua-zhu-xing-jie-shi-python3-b/ 思路: 动态规划, 沿着匹配串和字符串构成矩阵的对角线传递状态 1. 状态矩阵的首行与首列对应于空字符与空匹配符 2. 对角线意味着匹配串是否匹配对应的字符串 具体代码以下: ''' p.charAt(j) == s.charAt(i) : dp[i][j] = dp[i-1][j-1] If p.charAt(j) == '.' : dp[i][j] = dp[i-1][j-1]; If p.charAt(j) == '*': here are two sub conditions: //in this case, a* only counts as empty, otherwise is not match - if p.charAt(j-1) != s.charAt(i) : dp[i][j] = dp[i][j-2] - if p.charAt(j-1) == s.charAt(i) or p.charAt(i-1) == '.': dp[i][j] = dp[i-1][j] //in this

sed中的非贪婪(勉强)正则表达式匹配?

末鹿安然 提交于 2020-02-26 23:09:35
我正在尝试使用sed清理URL的行以仅提取域。 来自: http://www.suepearson.co.uk/product/174/71/3816/ 我想要: http://www.suepearson.co.uk/ (不管有没有训练斜线,都没有关系) 我试过了: sed 's|\(http:\/\/.*?\/\).*|\1|' 和(转义非贪婪量词) sed 's|\(http:\/\/.*\?\/\).*|\1|' 但我似乎无法使非贪婪量词( ? )正常工作,因此它最终总是与整个字符串匹配。 #1楼 在这种情况下,您无需使用非贪婪的正则表达式就可以完成工作。 试试这个非贪婪的正则表达式 [^/]* 而不是 .*? : sed 's|\(http://[^/]*/\).*|\1|g' #2楼 基本的或扩展的Posix / GNU正则表达式都不能识别非贪婪的量词; 您需要稍后的正则表达式。 幸运的是,在这种情况下,Perl正则表达式非常容易获得: perl -pe 's|(http://.*?/).*|\1|' #3楼 sed 's|(http:\/\/[^\/]+\/).*|\1|' #4楼 不使用正则表达式的另一种方法是使用字段/定界符方法,例如 string="http://www.suepearson.co.uk/product/174/71/3816/" echo

关于正则表达式

ε祈祈猫儿з 提交于 2020-02-26 18:37:59
正则表达式是为了解决字符串操作中一些比较麻烦的场景,比如字符串提取、字符串替换、字符串验证 创建一个正则表达式 var reg2=new RegExp("a"); var reg1=/a/; 其中//是标记,a表示要匹配的字符 正则表达式匹配 var reg=/a/; //匹配字符串中的a字符 reg.test("abc"); 正则表达式特殊字符 字符类别 . 表示除了换行符(\r \n)以外的任意字符 \d 表示数字 \D 是\d的取反结果,表示不是数字 \w 匹配字母、数字、下划线 ,三者满足其一即可 \W 是\w的取反 \s 表示一个空白字符(例如:\r \n \t 空格 。。。) \S 是\s的取反 \ 转义字符 字符集合 [] var reg=/[1a2b3]/; //匹配一个字符,这个字符必须是:1/a/2/b/3其中一种,如果是就表示满足,如果不是就不满足 var reg2=/[123][abc]/; //为了匹配连续2个字符,第一个字符必须在1/2/3之内,第二个字符必须在a/b/c之内 [^] var reg=/[^123]/; //匹配一个字符,但是这个字符既不是1 并且 不是2 并且 不是3 边界 ^ 表示字符串最左边 $ 表示字符串最右边 量词 出现0次或多次 出现1次或多次(至少一次) ? 出现0次或一次 {3} 出现3次 {3,} 至少出现3次 {3,5

linux当中的正则/扩展表达式(grep篇)

纵然是瞬间 提交于 2020-02-26 16:40:20
正则表达式在linux当中我们去使用shell脚本的时候经常会用到正则表达式,所以整理一些我们会用到的表达式,以便提升shell脚本能力 一、正则表达式(1) 通过grep命令实践正则表达式 比如我们去过滤带有bbb字段的行,直接可以通过grep "xx" file去获取到 [root@zhaocheng ~]# cat test1 aaa bbb ooo cccc dddd eeee fffff ggggg hhhhh bbbbb kkkkk pppppp ssssss xxxxxx mmmmmmmm [root@zhaocheng ~]# grep "bbb" test1 aaa bbb ooo fffff ggggg hhhhh bbbbb 比如去过滤出以aaa开头的行,我们就需要使用^去匹配了,^表示固定行首 引号加不加都可以 [root@zhaocheng ~]# grep "^aaa" test1 aaa bbb ooo [root@zhaocheng ~]# grep '^aaa' test1 aaa bbb ooo [root@zhaocheng ~]# grep ^aaa test1 aaa bbb ooo ^是匹配行首,而$是匹配行尾,可以试一下,引号也可以不加 [root@zhaocheng ~]# grep mm$ test1 kkkkk pppppp

Python中正则表达式用法 重点

我只是一个虾纸丫 提交于 2020-02-26 15:53:12
Python中正则表达式基础知识 </h1> <div class="clear"></div> <div class="postBody"> 一、正则表达式   1.使用正则表达式的动机     1. 文本处理已经成为计算机常见工作之一     2. 对文本内容的搜索,定位,提取是逻辑比较复杂的工作     3. 为了快速方便的解决上述问题,产生了正则表达式技术   2.定义:     即文本的高级匹配模式,提供搜索,替换等功能。其本质是由一系列字符和特殊符号构成的字串,这个字串即正则表达式。   3.原理:     通过普通字符和有特定含义的字符,来组成字符串,用以描述一定的字符串规则,比如:重复,位置等,来表达某类特定的字符串,进而匹配。   4.元字符使用:     1.普通字符--------匹配规则:每个普通字符匹配其对应的字符       e.g.         In : re.findall('ab',"abcdefabcd")         Out: ['ab', 'ab']     注意:正则表达式在python中也可以匹配中文     2.或关系(|)       元字符: |       匹配规则: 匹配 | 两侧任意的正则表达式即可       e.g.         In : re.findall('com|cn',"www.baidu.com

java 正则表达式空格无法匹配

那年仲夏 提交于 2020-02-26 15:42:51
举个例子 Boolean xx= Pattern.matches("^[a-zA-Z0-9\\s]*$", " 801 Tampines Ave 4 Singapore 520801sss1"); 匹配结果是false 在众多正则表达式的教程中,对于\s的解释都是匹配空格。但在java中,\s不能对他们全部进行匹配。 半角空格:“ ”. Unicode编码为:\u0020 可以通过正则表达式中的\s进行匹配 全角空格:“ ” Unicode编码为:\u3000 不能通过正则表达式中的\s进行匹配 不换行空格(连续空格) Unicode编码为:\u00A0,主要用在office中。 不能通过正则表达式中的\s进行匹配 匹配三种空格\s 改用 [\u3000|\u0020|\u00A0] 来源: https://www.cnblogs.com/XM-CHC/p/12366979.html

jmeter登录jforum实战案例

為{幸葍}努か 提交于 2020-02-26 09:09:27
使用fiddler工具获取登录session 查看链接/jforum/user/login.page请求链接,获取返回的JSESSIONID信息 jmeter获取JESSIONID,然后使用正则表达式保存下来 添加get请求后,添查看结果树,查看所返回的JESSIONID信息 在查看结果树获取到相应信息后,添加正则表达式组件,将sessionid参数化,动态化 获取正则表达式后,将JSESSIONID值添加到HTTP Cookie Manager 使用登录接口请求登录 再次使用fiddler查看请求,获取登录接口 jmeter添加示例如下: 添加查看结果树,查看登录请求返回的结果 登录成功后,添加列表查看页面查看帖子信息 来源: CSDN 作者: HX13190042 链接: https://blog.csdn.net/HX13190042/article/details/104507898

PHP中的正则表达式及模式匹配

萝らか妹 提交于 2020-02-26 03:11:30
PHP中对于正则处理文本提供了两种方式,一种是PCRE方式(PCRE库是一个实现了与perl 5在语法和语义上略有差异(详见下文)的正则表达式模式匹配功能的函数集. 当前的实现对应于perl 5.005.);另一个是POSIX方式。 PCRE函数库中的函数使用的模式语法非常类似perl. 表达式必须用分隔符闭合, 比如一个正斜杠(/). 分隔符可以使任意非字母数字, 除反斜杠(\)和空字节之外的非空白ascii字符. 如果分隔符 在表达式中使用, 需要使用反斜线进行转义. 自php 4.0.4开始, 可以使用perl样式的(), {}, []以及<>作为分隔符. 更详细的解释参见模式语法. 结束分隔符后面可以紧跟模式修饰符来影响匹配效果. 参见模式修饰符. PCRE的模式修正符 i (PCRE_CASELESS) 如果设定此修正符,模式中的字符将同时匹配大小写字母。 s(PCRE_DOTALL) 如果设定了此修正符,模式中的圆点元字符(.)匹配所有的字符,包括换行符。没有此设定的话,则不包括换行符。这和 Perl 的 /s 修正符是等效的。排除字符类例如 [^a] 总是匹配换行符的,无论是否设定了此修正符。 m(PCRE_MULTILINE) 默认情况下,PCRE 将目标字符串作为单一的一“行”字符所组成的(甚至其中包含有换行符也是如此)。“行起始”元字符(^)仅仅匹配字符串的起始

LeetCode--10. 正则表达式匹配(java)

纵饮孤独 提交于 2020-02-26 03:07:05
推荐题解 大佬的优质题解,收藏学习 class Solution { public boolean isMatch ( String s , String p ) { if ( s == null || p == null ) return false ; int m = s . length ( ) , n = p . length ( ) ; boolean [ ] [ ] dp = new boolean [ m + 1 ] [ n + 1 ] ; dp [ 0 ] [ 0 ] = true ; //"" 和p的匹配关系初始化,a*a*a*a*a*这种能够匹配空串,其他的是都是false。 // 奇数位不管什么字符都是false,偶数位为* 时则: dp[0][i] = dp[0][i - 2] for ( int i = 2 ; i <= n ; i += 2 ) { if ( p . charAt ( i - 1 ) == '*' ) { dp [ 0 ] [ i ] = dp [ 0 ] [ i - 2 ] ; } } for ( int i = 1 ; i <= m ; i ++ ) { for ( int j = 1 ; j <= n ; j ++ ) { char sc = s . charAt ( i - 1 ) ; char pc = p . charAt (

正则表达式基础入门

*爱你&永不变心* 提交于 2020-02-26 01:48:06
介绍 正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它"匹配"了,否则,该字符串就是不合法的。 手机号正则表达式(java) // 数字1开头,第2位可能是3,5,7...,后面还有9位数字。 String telRegex = "[1][35789]\\d{9}"; 来源: https://www.cnblogs.com/feiqiangsheng/p/11077587.html