原文: 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
1
ShundL 2020-03-05 10:35:46 +08:00
因为贪婪匹配,试试*后面加?
|
2
keith1126 2020-03-05 10:44:18 +08:00
不是很懂正则,稍微改了改,似乎可以用:
\d+、\s*.+?(?=\d+、|$) |
3
aureole999 2020-03-05 10:57:23 +08:00
\d+、[\s\S]*?(?=\d+、)
|
4
danmaidesenling OP @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 期汉发 希望能帮到其他人 |
5
enlight 2020-03-05 13:39:04 +08:00
什么语言?不同语言对正则支持度不一样
|
6
enlight 2020-03-05 13:41:09 +08:00
如果是 javascript,题主可以换个思路,比如 str.split(/\d+、/)
|
7
danmaidesenling OP 用的 java,java split 只有这个方法:String[] split(String regex, int limit)
|