正则表达式

14 篇文章 0 订阅
12 篇文章 0 订阅

1. Java中使用正则表达式

String line = "1-1,hello world";
Matcher m = Pattern.compile("^(.*,)(.*\\s)(.*)").matcher(line);
if (m.matches()){
    String num = m.group(1);
    String title = m.group(2);
    String ans = m.group(3);
    System.out.println("编号:"+num+",标题:"+title+",答案:"+ans);
}

2. Python中使用正则表达式

import re
line = '1-1,hello world'
num=re.compile(u".*,").findall(line)[0]
title=re.compile(u",.+?\s").findall(line)[0]
ans=re.compile(u"\s.*").findall(line)[0]
print(f'编号:{num},标题:{title},答案:{ans}')

3. 正则表达式

测试工具

http://tool.oschina.net/regex/
https://c.runoob.com/front-end/854

非打印字符
非打印字符功能
\cxx为A-Z或a-z,表示匹配一个control-x控制字符
\f换页
\n换行
\r回车
\s空格等任意空白字符, 等价[ \f\n\r\t\v]
\S任意非空白字符
\t制表符
\v垂直制表符
打印字符
打印字符功能
\d数字
\D非数字
\w包括下划线在内的任意字母和数字
\W非下划线,字母或数字
\正整数匹配多个已获取的字符
定位符
定位符功能
^直接使用表示锁定行首位置,在括号内表示不匹配该字符集合,不支持\n或\r
$锁定行尾位置,不支持\n或\r
\b匹配字与空格间的位置
\B逆\b
特殊含义字符
特殊含义字符功能
()子表达式,Java中的捕获组
[]匹配其中任意字符
.除\n外任意字符
\转义,将下一个字符标记为特殊字符,Java中\\表示一个\
|两项之间任意一个
频数限定符

非贪婪模式:在.*?后加上?,实现最小匹配

频数限定符功能
+前一个字符出现1或多次
*前一个字符出现0或多次
?前一个字符出现0或1次
{}规定前一个字符的出现次数,一个数字表示固定次数,一个数字加逗号表示以上,两个数字表示区间
非捕获符
非捕获符功能
(?:pattern)匹配pattern但不获取结果
(?=pattern)正向肯定预查,在pattern起始位置开始检查字符串是否匹配,匹配返回真
(?!pattern)正向否定预查,即不匹配返回真
(?<=pattern)反向肯定预查,从后向前预查pattern是否匹配
(?<!pattern)反向否定预查,即不匹配返回真
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值