正则表达式 特定字符匹配特定字符前的字符

java正则表达式如何匹配某个字符串之前的字符串-CSDN论坛
java正则表达式如何匹配某个字符串之前的字符串
通过正则表达式匹配某个字符串之前的字符串,比如文件中包含字符串"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd",如何通过正则表达式获取字符串"http://www.w3.org/",&即字符串"TR"之前的那一串
System.out.println("http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd".replaceAll("TR.*",&""));
谢谢1楼的回复,不过内容是变化的,只知道存在一个http://.../TR/xhtml11...这样的一个子串,如
ftp://www.w3.org/TR/xhtml1/DTD/,http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd,
http://www.w3.org/HR/xhtml1/DTD/
不清楚&你需求
import&java.util.regex.M
import&java.util.regex.P
public&class&Test&{
&&&&public&static&void&main(String[]&args)&{
&&&&&&&&String&str&=&"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";
&&&&&&&&Pattern&pattern&=&Pattern.compile("http://.*(?=TR/xhtml1.*)");
&&&&&&&&Matcher&matcher&=&pattern.matcher(str);
&&&&&&&&while&(matcher.find())&{
&&&&&&&&&&&&System.out.println(matcher.group());
import&java.text.ParseE
import&java.util.regex.M
import&java.util.regex.P
public&class&Test&{
&&&&public&static&void&main(String[]&args)&throws&ParseException&{
&&&&&&&&Pattern&p&=&Pattern.compile("(http://)?(([^/&]+/)+)([^&]+)");
&&&&&&&&Matcher&m&=&p
&&&&&&&&&&&&.matcher("a/x.jpg&http://server.php/b/x/123.jpg&server/b/x/黄彪.x.jpg&server/b/x/Yahoo.jpg");
&&&&&&&&while&(m.find())&{
&&&&&&&&&&&&String&protocol&=&m.group(1)&==&null&?&""&:&m.group(1);
&&&&&&&&&&&&System.out.println(protocol&+&m.group(2)&+&"&=&&"&+&m.group(4));
&&&&&&&&p&=&Pattern.compile("(([^\\.&]+\\.)+)([^&]+)");
&&&&&&&&m&=&p.matcher(":com.factory.web.Person&:com.factory.web.Animal");
&&&&&&&&while&(m.find())&{
&&&&&&&&&&&&System.out.println(m.group(1)&+&"&=&&"&+&m.group(3));
&&&&&&&&//&这里是你需要的,前面的我懒得删除了,*^_^*
&&&&&&&&p&=&Pattern.compile("([^,]+)TR");
&&&&&&&&m&=&p.matcher("ftp://www.w3.org/TR/xhtml1/DTD/"
&&&&&&&&&&&&&&&&+&",http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
&&&&&&&&&&&&&&&&+&",http://www.w3.org/HR/xhtml1/DTD/");
&&&&&&&&while&(m.find())&{
&&&&&&&&&&&&System.out.println(m.group(1));
使用正则表达式的最小匹配、零宽断言
Pattern.compile("http://.*?(?=TR/xhtml1.*)");
先看看&看解决了没有啊
回复您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
正则表达式和字符串处理(全).doc 9页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
正则表达式和字符串处理(全)
你可能关注的文档:
··········
··········
正则表达式和字符串处理(全)
第一章????????
正则表达式(Regular Expression)起源于人类神经系统的研究。正则表达式的定义有以下几种:
??????????用某种模式去匹配一类字符串的公式,它主要是用来描述字符串匹配的工具。
??????????描述了一种字符串匹配的模式。可以用来检查字符串是否含有某种子串、将匹配的子串做替换或者从中取出符合某个条件的子串等。
??????????由普通字符(a-z)以及特殊字符(元字符)组成的文字模式,正则表达式作为一个模版,将某个字符模式与所搜索的字符串进行匹配。
??????????用于描述某些规则的的工具。这些规则经常用于处理字符串中的查找或替换字符串。也就是说正则表达式就是记录文本规则的代码。
??????????用一个字符串来描述一个特征,然后去验证另一个字符串是否符合这个特征。
以上这些定义其实也就是正则表达式的作用。
第二章?正则表达式基础理论
这些理论将为编写正则表达式提供法则和规范,正则表达式主要包括以下基础理论:
??????????元字符
??????????字符串
??????????字符转义
??????????反义
??????????限定符
??????????替换
??????????分组
??????????反向引用
??????????零宽度断言
??????????匹配选项
??????????注释
??????????优先级顺序
??????????递归匹配
2.1?元字符
在正则表达式中,元字符(Metacharacter)是一类非常特殊的字符,它能够匹配一个位置或字符集合中的一个字符,如:、?\w等。根据功能,元字符可以分为两种类型:匹配位置的元字符和匹配字符的元字符。
2.1.1?匹配位置的元字符
包括:^、$、和\b。其中^(脱字符号)和$(美元符号)都匹配一个位置,分别匹配行的开始和结尾。比如,^string匹配以string开头的行,string$匹配以string结尾的行。^string$匹配以string开始和结尾的行。单个$匹配一个空行。单个^匹配任意行。\b匹配单词的开始和结尾,如:\bstr匹配以str开始的单词,但\b不匹配空格、标点符号或换行符号,所以,\bstr可以匹配string、string fomat等单词。\bstr正则表达式匹配的字符串必须以str开头,并且str以前是单词的分界处,但此正则表达式不能限定str之后的字符串形式。以下正则表达式匹配以ing结尾的字符串,如string、This is a string等
正则表达式ing\b匹配的字符串必须以ing结尾,并且ing后是分界符,以下正则表达式匹配一个完整的单词:\bstring\b。
2.1.2?匹配字符的元字符
匹配字符的元字符有7个:.(点号)、\w、\W、、s\、\S、\d和\D。其中点号匹配除换行之外的任意字符;\w匹配单词字符(包括字母、汉字、下划线和数字);\W匹配任意非单词字符、\s匹配任意的空白字符,如空格、制表符、换行等;\S匹配任意的非空白字符;\d匹配任意数字字符;\D匹配任意的非数字字符。如:
^.$匹配一个非空行,在该行中可以包含除了换行符以外的任意字符。
^\w$匹配一个非空行,并且该行中只能包含字母、数字、下划线和汉字中的任意字符。
\ba\w\w\w\w\w\w\\b匹配以字母a开头长度等于7的任意单词
\ba\w\w\w\d\d\d\D\b匹配以字母a开头后面有3个字符三个数字和1个非数字字符长度等于8的单词
2.2?字符类
字符类是一个字符集合,如果该字符集合中的任何一个字符被匹配,则它会找到该匹配项。字符类可以在[](方括号)中定义。如:
[012345]可以匹配数字0到5中的任意一个。
&H[123456]&可以匹配HTML标签中的H1到H6。
[Jj]ack可以匹配字符串Jack或jack。
但是,由于表达式[]书写非常不方便,连字符(-)便应用而生,[0-9]等价于[]。[a-z]匹配任何小写字母,[A-Z]匹配任意大写字母。如果要在字符类中包含连字符,则必须包含在第一位,如:[-a]表示表达式匹配-或者a。在字符类中如果^是字符类的第一个字符表示否定该字符串,也就是匹配该字符串外的任意字符,如:[^abc]匹配除了abc以外的任意字符,[^-]匹配除了连字符以外的任意字符,a[^b]匹配a之后不是b的字符串。
表2-1?常用的字符类
字符或表达式 说明
\w 匹配单词字符(包括字母、数字、下划线和汉字)
\W 匹配任意的非单词字符(包括字母、数字、下划线和汉字)
\s 匹配任意的空白字符,如空格、制表
正在加载中,请稍后...查看: 684|回复: 4
求正则表达式提取不规律的特定字符串
阅读权限30
在线时间 小时
助如何用正则表达式提取以下字符串中的 *K*+* 字符串
请高手指点如何实现提取功能,谢谢@
(19.63 KB, 下载次数: 15)
14:18 上传
点击文件名下载附件
原字串正确提取的结果混凝土护脚(DK0+080~DK0+244右侧)DK0+080~DK0+244CK1+003~CK1+000坡面植物防护 CK1+003~CK1+000(DK0+000~DK0+080左侧)DK0+000~DK0+080坡面植物防护(CRK1+540~CRK1+690左侧)CRK1+540~CRK1+690A桥头路基处理(IK0+316.381匝道桥)IK0+316.381桥头路基处理(IK0+316.381匝道桥)
IK0+316.381桥头路基处理(AK0+877 A匝道桥)
AK0+877桥头路基处理(CK0+271 C匝道桥)
CK0+271桥头路基处理(DK0+437 D匝道桥)& &DK0+437预制混凝土急流槽(CK0+729.6右侧)
CK0+729.6预制混凝土急流槽(CK0+760.7)
CK0+760.7排水管+小方井(AK0+250~AK0+390左侧)AK0+250~AK0+390排水管+小方井(BK0+221~BK1+035右侧)BK0+221~BK1+035排水管+小方井(CK0+167~CK0+430右侧)CK0+167~CK0+430排水管+小方井(CK0+455~CK0+532左侧)CK0+455~CK0+532
阅读权限50
在线时间 小时
& & & & & & & &
用替换方法将汉字和括号替换掉
reg.pattern=&[\u4E00-\u9FFF]|(|)&
s=cells(i,1)
s=reg.replace(s,&&)
cells(i,2)=s
阅读权限100
在线时间 小时
2楼代码可行
阅读权限50
在线时间 小时
用替换方法将汉字和括号替换掉
reg.pattern=&[%u4E00-%u9FFF]|(|)&
s=cells(i,1)
汉字间隔中还有“+”符号呢
阅读权限30
在线时间 小时
本帖最后由 袁振涛 于
22:03 编辑
[A-Z]+[A-Z\d~\+\.]+\d复制代码
或者
[A-Z\d~\+\.]{2,}复制代码
正则表达式特征就是大写字母开始,数字结束,经测试无误
最新热点 /1
ExcelHome每周都有线上直播公开课,
国内一流讲师真身分享,高手贴身答疑,
赶不上直播还能看录像,
关键居然是免费的!
厚木哥们都已经这么努力了,
你还好意思说学不好Office。
玩命加载中,请稍候
玩命加载中,请稍候
Powered by
本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任! & & 本站特聘法律顾问:徐怀玉律师 李志群律师正则表达式 某两个确定字符串之间任意的东西
17:00:38 +08:00 · 12397 次点击
如AAxxxBB,我要拿到现在只知道AA(.*?)BB但这样貌似是匹配整一个AAxxxBB?啊好弱啊每次写正则表达式就只会自己在那瞎试,大家有什么好的学习方法吗?
16 回复 &| &直到
17:25:36 +08:00
& & 17:10:42 +08:00
()是个group,可以取到的
python的话,m.group(1)就可以了
& & 17:14:46 +08:00
替换掉AA和BB就是中间的了
& & 17:17:58 +08:00
java string.replaceAll呢?
& & 17:22:26 +08:00
可以使用前瞻否定式,不过你这种其实没必要,用1楼的方法就挺好
& & 17:22:45 +08:00
字符串都确定了,还需要正则么。。。直接substring啊(AA BB的长度自己算)
& & 17:23:53 +08:00
@ 主要不是取出,是要替换,不更改原string
& & 17:33:25 +08:00
建议还是把具体场景拿出来。
& & 17:41:41 +08:00
(?&=AA).*(?=BB)
& & 18:05:57 +08:00
那个小于号是啥意思,测试了下似乎报错啊。
(?=AA).*?(?=BB)这样测试了下拿到了AAxxx
& & 18:07:50 +08:00
```
s.replaceAll(&(?&=AA).*?(?=BB)&, &CCC&);
s.replaceAll(&(AA).*?(BB)&, &$1CCC$2&);
& & 18:19:28 +08:00
nice!!
干的漂亮
& & 18:22:17 +08:00
学习方法吗 ...
供参考 ...
& & 18:23:04 +08:00
& & 21:59:44 +08:00
我是用perl的,括号里面表示想要匹配后保留的(算是吧)
perl用 $1 表示 = = (真是丧失 = =)
& & 10:39:50 +08:00
@ 零宽断言
& & 17:25:36 +08:00
js 的话用 match 方法
然后得到一个 array 其中 array[0]是包括 AA 与 BB 的
array[1]是不包括的
& · & 2145 人在线 & 最高记录 3541 & · &
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.0 · 25ms · UTC 13:03 · PVG 21:03 · LAX 06:03 · JFK 09:03? Do have faith in what you're doing.

我要回帖

更多关于 正则表达式匹配某字符 的文章

 

随机推荐