迫于死活想不出来,请教一个正则表达式的问题

2020-03-05 10:29:43 +08:00
 danmaidesenling

原文: 11、大汶口文化中发现有四个与早期汉字结构相似的图形符号,这几个符号属于大汶口文化早期,距今约( )年至 5000 年 A 2000 B 3000 C 40000 D 4500 12、ddgdfgsdfg 期汉发

我想用正则表达式 把 11 题 12 题 提取出来。

我想到的 是 \d+、[\s\S]*(?=\d+、)

但是的出来的结果是

11、大汶口文化中发现有四个与早期汉字结构相似的图形符号,这几个符号属于大汶口文化早期,距今约( )年至 5000 年 A 2000 B 3000 C 40000 D 4500 1

1478 次点击
所在节点    问与答
7 条回复
ShundL
2020-03-05 10:35:46 +08:00
因为贪婪匹配,试试*后面加?
keith1126
2020-03-05 10:44:18 +08:00
不是很懂正则,稍微改了改,似乎可以用:

\d+、\s*.+?(?=\d+、|$)
aureole999
2020-03-05 10:57:23 +08:00
\d+、[\s\S]*?(?=\d+、)
danmaidesenling
2020-03-05 11:08:16 +08:00
@ShundL @keith1126 @aureole999 非常感谢各位,确实存在贪婪的问题
\d+、[\s\S]*?(?=\d+、) 这个可以用, 但是不能匹配最后一题。我改了下

\d+、[\s\S]*?(?=\d+、)|\d+、[\s\S]*

匹配的结果如下:
group0:
11、大汶口文化中发现有四个与早期汉字结构相似的图形符号,这几个符号属于大汶口文化早期,距今约( )年至 5000 年
A 2000 B 3000 C 40000 D 4500

group1:
12、ddgdfgsdfg 期汉发

希望能帮到其他人
enlight
2020-03-05 13:39:04 +08:00
什么语言?不同语言对正则支持度不一样
enlight
2020-03-05 13:41:09 +08:00
如果是 javascript,题主可以换个思路,比如 str.split(/\d+、/)
danmaidesenling
2020-03-05 13:52:54 +08:00
用的 java,java split 只有这个方法:String[] split(String regex, int limit)

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

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

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

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

© 2021 V2EX