hdu 6170 正则表达式应用
来源:互联网 发布:淘宝好听的用户名大全 编辑:程序博客网 时间:2024/05/16 14:03
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6170
正则表达式在C++11以上支持
其实题目里所说的匹配就是正则表达式的匹配,首先看几个正则表达式的内容:
\num
匹配num,其中num是一个正整数。对所获取的匹配的引用。例如,“(.)\1”匹配两个连续的相同字符。
( )将( 和 ) 之间的表达式定义为“组”(group),并且将匹配这个表达式的字符保存到一个临时区域(一个正则表达式中最多可以保存9个),它们可以用 \1 到\9 的符号来引用。.点
匹配除“\r\n”之外的任何单个字符。要匹配包括“\r\n”在内的任何字符,请使用像“[\s\S]”的模式。
那么 对于匹配的内容中正常单独的 . 和 * 都是直接使用正则表达式匹配,但是遇到了.*的时候,按照题目意图,我们将其替换成 (.)\X ,其中()表示组,里面放一个. 其中.就是匹配任意字符,但是题目说是可以匹配多个 那么就是可以匹配形如: <p>xxxx</p> 的东西,后面数字表示组数,组数必须不同,因为前面的.匹配到的是不同的。*还是正常的匹配。头文件:#include<regex>
#include <iostream>#include<regex>#include<cstring>using namespace std;int N,m,n,t;char a[10111],b[11111],c[10111];int main() { scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%s",a+1); scanf("%s",b+1); int la=strlen(a+1); int lb=strlen(b+1);a[0]=b[0]=c[0]='#'; int lc=1; int cc=1; for(int t=1;t<=lb;t++) { if(b[t] == '*' && b[t-1] =='.') { lc+=sprintf(c+lc-1,"(.)\\%d*",cc++)-1; } else c[lc++] = b[t]; } c[lc]=0; // cout<<a<<endl; // cout<<b<<endl; // cout<<c<<endl; if(regex_match(a,regex(c))) printf("yes\n"); else printf("no\n"); } return 0;}/*3aaa*abba.*abbaab */
阅读全文
0 0
- hdu 6170 正则表达式应用
- hdu 6170 正则表达式
- hdu 6170 正则表达式 dp
- hdu 6170(正则表达式)
- HDU 6170 正则表达式匹配
- 正则表达式的应用
- 正则表达式的应用
- 正则表达式的应用
- 正则表达式及应用
- 正则表达式应用知识
- 正则表达式应用
- 正则表达式简单应用
- 正则表达式的应用
- 正则表达式应用
- C#正则表达式应用
- 正则表达式应用
- 正则表达式的应用
- 正则表达式 的应用
- Android进阶#(7/12)装点程序“门面”——代码规范_注释
- Python3 PyQt5 pycharm 环境搭建
- Caffe学习-手写数字识别
- js 去除数组中的某一项
- 工厂模式以及工厂方法
- hdu 6170 正则表达式应用
- android 源码在线阅读网址
- javaweb 项目的系统权限管理
- python3与python2的一些区别(使用2to3将代码移植到python3)
- 面试复习-------算法与数据结构------栈&队列
- TelecomManager与TelephonyManager的联系
- Java __IO流---两张体系架构图搞定
- 获取Goroutine Id的最佳实践
- zcmu-1913