正则表达式 某两个确定字符串之间任意的东西

2014-11-10 17:00:38 +08:00
 lixia625
如AAxxxBB,我要拿到xxx;
现在只知道AA(.*?)BB
但这样貌似是匹配整一个AAxxxBB?
啊好弱啊每次写正则表达式就只会自己在那瞎试,
大家有什么好的学习方法吗?
17187 次点击
所在节点    问与答
16 条回复
iEverX
2014-11-10 17:10:42 +08:00
()是个group,可以取到的
python的话,m.group(1)就可以了
wolong
2014-11-10 17:14:46 +08:00
替换掉AA和BB就是中间的了
lixia625
2014-11-10 17:17:58 +08:00
@iEverX
java string.replaceAll呢?
coofly
2014-11-10 17:22:26 +08:00
可以使用前瞻否定式,不过你这种其实没必要,用1楼的方法就挺好
besto
2014-11-10 17:22:45 +08:00
字符串都确定了,还需要正则么。。。直接substring啊(AA BB的长度自己算)
lixia625
2014-11-10 17:23:53 +08:00
@besto 主要不是取出,是要替换,不更改原string
besto
2014-11-10 17:33:25 +08:00
@lixia625
建议还是把具体场景拿出来。
halfelf
2014-11-10 17:41:41 +08:00
(?<=AA).*(?=BB)
lixia625
2014-11-10 18:05:57 +08:00
@halfelf
那个小于号是啥意思,测试了下似乎报错啊。
(?=AA).*?(?=BB)这样测试了下拿到了AAxxx 好奇怪
lululau
2014-11-10 18:07:50 +08:00
```
s.replaceAll("(?<=AA).*?(?=BB)", "CCC");
s.replaceAll("(AA).*?(BB)", "$1CCC$2");

```
lixia625
2014-11-10 18:19:28 +08:00
@lululau
nice!!
干的漂亮
Sunyanzi
2014-11-10 18:22:17 +08:00
学习方法吗 ... /t/144987 供参考 ...
lixia625
2014-11-10 18:23:04 +08:00
lushl9301
2014-11-10 21:59:44 +08:00
我是用perl的,括号里面表示想要匹配后保留的(算是吧)
perl用 $1 表示 = = (真是丧失 = =)
hiddenman
2014-11-11 10:39:50 +08:00
@lululau 零宽断言
iimT
2017-02-07 17:25:36 +08:00
js 的话用 match 方法 然后得到一个 array 其中 array[0]是包括 AA 与 BB 的 array[1]是不包括的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/145401

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX