正则表达式

hihoCoder 1039: 字符消除

戏子无情 提交于 2020-01-09 22:37:17
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi最近在玩一个字符消除游戏。给定一个只包含大写字母"ABC"的字符串s,消除过程是如下进行的: 1)如果s包含长度超过1的由相同字母组成的子串,那么这些子串会被同时消除,余下的子串拼成新的字符串。例如"ABCCBCCCAA"中"CC","CCC"和"AA"会被同时消除,余下"AB"和"B"拼成新的字符串"ABB"。 2)上述消除会反复一轮一轮进行,直到新的字符串不包含相邻的相同字符为止。例如”ABCCBCCCAA”经过一轮消除得到"ABB",再经过一轮消除得到"A" 游戏中的每一关小Hi都会面对一个字符串s。在消除开始前小Hi有机会在s中任意位置(第一个字符之前、最后一个字符之后以及相邻两个字符之间)插入任意一个字符('A','B'或者'C'),得到字符串t。t经过一系列消除后,小Hi的得分是消除掉的字符的总数。 请帮助小Hi计算要如何插入字符,才能获得最高得分。 输入 输入第一行是一个整数T(1<=T<=100),代表测试数据的数量。 之后T行每行一个由'A''B''C'组成的字符串s,长度不超过100。 输出 对于每一行输入的字符串,输出小Hi最高能得到的分数。 提示 第一组数据:在"ABCBCCCAA"的第2个字符后插入'C

atitit.词法分析原理 词法分析器 (Lexer)

♀尐吖头ヾ 提交于 2020-01-09 12:56:38
atitit. 词法分析 原理 词法分析器 (Lexer) 1 . 词法分析 (英语: lexical analysis ) 1 2 . ;实现词法分析程序的常用途径 : 自动生成 , 手工生成 . [1] 2 2 .1. 词法分析程序的功能 2 2 .2. 如何描述词素 3 2 .3. 单词 token 3 2 .4. Token 的类型 ,根据程序设计语言的特点,单词可以分为五类:关键字、标识符、常量、运算符、界符。以 4 2 .5. 词法分析 的第一阶段即扫描器 4 2 .6. 词法分析 的第 二 阶段 评估器( Evaluator ) 5 2 .7. 例如 C语言程序段的词法分析结果 5 2 .8. 最长原则 6 2 .9. 词法单元的识别 6 2 .10. 不确定 ” ( Nondeterministic Finite Automata ,NFA 8 2 .11. 转换图(transition graph)的表示 9 2 .12. 词法分析 (3)---DFA 10 2 .13. 为什么要 NFA 转 DFA 12 2 .14. 则表达式转 NFA 13 2 .15. 正则表达式如何转换为NFA呢?有几个公式 (MLS2007[1]): 13 2 .16. 构造词法分析器了。大致的流程如下: 19 2 .17. 常用的 token scanner 19 2 .18.

django 视图-----URLconf

风格不统一 提交于 2020-01-09 05:26:57
URLconf 在settings.py文件中通过ROOT_URLCONF指定根级url的配置 urlpatterns是一个url()实例的列表 一个url()对象包括: 正则表达式 视图函数 名称name 编写URLconf的注意: 若要从url中捕获一个值,需要在它周围设置一对圆括号 不需要添加一个前导的反斜杠,如应该写作'test/',而不应该写作'/test/' 每个正则表达式前面的r表示字符串不转义 请求的url被看做是一个普通的python字符串,进行匹配时不包括get或post请求的参数及域名 http://www.itcast.cn/python/1/?i=1&p=new,只匹配“/python/1/”部分 正则表达式非命名组,通过位置参数传递给视图 url(r'^([0-9]+)/$', views.detail, name='detail'), 正则表达式命名组,通过关键字参数传递给视图,本例中关键字参数为id url(r'^(?P<id>[0-9]+)/$', views.detail, name='detail'), 参数匹配规则:优先使用命名参数,如果没有命名参数则使用位置参数 每个捕获的参数都作为一个普通的python字符串传递给视图 性能:urlpatterns中的每个正则表达式在第一次访问它们时被编译,这使得系统相当快 包含其它的URLconfs

史上最全常用正则表达式大全

浪子不回头ぞ 提交于 2020-01-09 03:19:32
很多不太懂正则的朋友,在遇到需要用正则校验数据时,往往是在网上去找很久,结果找来的还是不很符合要求。所以我最近把开发中常用的一些正则表达式整理了一下,在这里分享一下。给自己留个底,也给朋友们做个参考。 一、校验数字的表达式 1. 数字:^[0-9]*$ 2. n位的数字:^\d{n}$ 3. 至少n位的数字:^\d{n,}$ 4. m-n位的数字:^\d{m,n}$ 5. 零和非零开头的数字:^(0|[1-9][0-9]*)$ 6. 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$ 7. 带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})?$ 8. 正数、负数、和小数:^(\-|\+)?\d+(\.\d+)?$ 9. 有两位小数的正实数:^[0-9]+(.[0-9]{2})?$ 10. 有1~3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$ 11. 非零的正整数:^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$ 12. 非零的负整数:^\-[1-9][]0-9"*$ 或 ^-[1-9]\d*$ 13. 非负整数:^\d+$ 或 ^[1-9]\d*|0$ 14. 非正整数:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$ 15. 非负浮点数

C# 词法分析器(三)正则表达式

南楼画角 提交于 2020-01-09 02:01:14
系列导航 (一)词法分析介绍 (二)输入缓冲和代码定位 (三)正则表达式 (四)构造 NFA (五)转换 DFA (六)构造词法分析器 (七)总结 正则表达式是一种描述词素的重要表示方法。虽然正则表达式并不能表达出所有可能的模式(例如“由等数量的 a 和 b 组成的字符串”),但是它可以非常高效的描述处理词法单元时要用到的模式类型。 一、正则表达式的定义 正则表达式可以由较小的正则表达式按照规则递归地构建。每个正则表达式 $r$ 表示一个语言 $L(r)$,而语言可以认为是一个字符串的集合。正则表达式有以下两个基本要素: $\epsilon$ 是一个正则表达式, $L( \epsilon ) = { \epsilon }$,即该语言只包含空串(长度为 0 的字符串)。 如果 $a$ 是一个字符,那么 $\bf{ a }$ 是一个正则表达式,并且 $L( \bf{a} ) = \{ a \}$,即该语言只包含一个长度为 $1$ 的字符串 $a$。 由小的正则表达式构造较大的正则表达式的步骤有以下四个部分。假定 $r$ 和 $s$ 都是正则表达式,分别表示语言 $L(r)$ 和 $L(s)$,那么: $(r)|(s)$ 是一个正则表达式,表示语言 $L(r) \cup L(s)$,即属于 $L(r)$ 的字符串和属于 $L(s)$ 的字符串的集合( $L(r) \cup L(s) =

正则表达式

て烟熏妆下的殇ゞ 提交于 2020-01-09 00:34:40
表达式 /^[0-9]+abc$/ // 以数字开始 abc字符串结束 123abc// + 表示前面的字符必须至少出现一次 var patt=/^[0-9]+abc$/;var result=patt.test('abc'); // false /^[0-9]*abc$/ // 以数字开始 abc字符串结束 abc// * 表示前面的字符可以不出现,也可以出现一次或者多次 var patt=/^[0-9]*abc$/;var result=patt.test('abc'); //true /^[0-9]?abc$/ // 以数字开始 abc字符串结束 abc// ? 表示前面的字符最多只可以出现一次 var patt=/^[0-9]?abc$/;var result=patt.test('abc'); //truevar result=patt.test('1abc'); //true var result=patt.test('12abc'); //false /^[a-z0-9_-]{3,5}$/ // 只允许用包含字符、数字、下划线和连接字符(-),并设置长度// \s 空格符// /\s*$/ 右侧空格 // /^\s*/ 左侧空格 // /\s/g 全部空格 若要匹配特殊字符,需要在特殊字符前面加 / , 如 * , /* 表示匹配 * 字符 *

51正则表达式匹配

三世轮回 提交于 2020-01-09 00:32:58
题目描述 请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配。 思路: 首先题目要理解,通配符*是重复前面一个元素,而不是*前面所有的元素。而且通配符*号前面必须要有元素,就是说*出现的位置不可能在第一位。 f[i][j] = f[i][j - 2] || (s[i - 1] == p[j - 2] || '.' == p[j - 2]) && f[i - 1][j]; f[i][j - 2]表示前面的元素出现0次,后面表示出现次数大于等于1. aabbb aab.* 能够出现多次,说明s中减少一个(i -1)也能匹配,所以这个条件也必须满足。 s[i - 1] == p[j - 2]因为ij表示出现的元素个数,相当于下标从i - 1,j - 1.表示p中倒数第二个元素要和s中倒数第一个元素相等。这样才能进行重复。注意初始化第一列的情况。 class Solution { public: bool match(char* str, char* pattern){ int n = strlen(str),m = strlen(pattern)

史上最全正则表达式

若如初见. 提交于 2020-01-08 23:40:40
一、校验数字的表达式 数字: [1] *$ n位的数字:^\d{n}$ 至少n位的数字:^\d{n,}$ m-n位的数字:^\d{m,n}$ 零和非零开头的数字:^(0|[1-9][0-9]*)$ 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$ 带1-2位小数的正数或负数:^(-)?\d+(.\d{1,2})?$ 正数、负数、和小数:^(-|+)?\d+(.\d+)?$ 有两位小数的正实数: [2] +(.[0-9]{2})?$ 有1~3位小数的正实数: [3] +(.[0-9]{1,3})?$ 非零的正整数: [4] \d*$ 或 ^([1-9][0-9] ){1,3}$ 或 ^+?[1-9][0-9] $ 非零的负整数:^-[1-9][]0-9" $ 或 ^-[1-9]\d $ 非负整数:^\d+$ 或 [5] \d*|0$ 非正整数:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$ 非负浮点数:^\d+(.\d+)?$ 或 [6] \d*.\d*|0.\d*[1-9]\d*|0?.0+|0$ 非正浮点数:^((-\d+(.\d+)?)|(0+(.0+)?))$ 或 ^(-([1-9]\d*.\d*|0.\d*[1-9]\d*))|0?.0+|0$ 正浮点数: [7] \d*.\d*|0.\d*[1-9]\d*$ 或

Jmeter 正则的提取

送分小仙女□ 提交于 2020-01-08 23:37:36
1、添加Jmeter正则表达式提取器 在具体的Request下添加Jmeter正则表达式提取器(Jmeter正则表达式在“后置处理器”下面) 2、 正则名称 :相当于要存储的变量名 正则表达式 :正则表达式提取内容的范围。(如放在某个采样器后面,提取响应内容包含某内容,如input type="hidden" name="sign" value="(.+?)">) 其它 :正则表达式提取的相关设置 引用名称 :自己定义的变量名称,后续 请求 将要引用到的 变量名 ,如填写的是:user_id,后面的引用方式是${user_id} 正则表达式 :提取内容的正则表达式,相当于lr中的关联函数 【() 括起来的部分就是需要提取的,对于你要提的内容需要用小括号括起来】 【. 点号表示匹配任何字符串】 【+ 一次或多次】 【? 在找到第一个匹配项后停止】 模板 :用$$引用起来,如果在正则表达式中有多个正则表达式(多个括号括起来的东东),则可以是$2$,$3$等等,表示解析到的第几个值给user_id。例如:$1$表示匹配到的第一个值 匹配数字 :0代表随机取值,-1代表所有值,此时提取结果是一个数组,其余正整数代表第几个匹配的内容提取出来。如果匹配数字选择的是-1,还可以通过${user_id_1}的方式来取第1个匹配的内容,${user_id_2}来取第2个匹配的内容。 缺省值

正则表达式------去掉字符串前后所有空格

好久不见. 提交于 2020-01-08 22:03:05
正则表达式------去掉字符串前后所有空格 方式一:直接封装成一个函数,让其他人调用。 /**去掉字符串前后所有空格*/ function trim(str){ return str.replace(/(^\s*)|(\s*$)/g, ""); } 方式二:直接在值中替换掉。 var str1=' test test '; var str2 = str1.replace(/(^\s*)|(\s*$)/g, ""); console.log(str2 ); 方式三:直接用JQuery去掉。 var content = $( '#content').val(); if($.trim(content) == “”){ alert( '空'); } 使用案例: //计算标题长度 function getNickNameLength(){ var title = $("#title").val(); var len = 0; for (var i = 0; i < title.length; i++) { var a = title.charAt(i); if (a.match(/[^\x00-\xff]/ig) != null){ len += 2; }else{ len += 1; } } return len; } //验证活动标题 function vailTitle(){ /