首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用正则表达式拆分MCQs(选择题)字符串

如何使用正则表达式拆分MCQs(选择题)字符串
EN

Stack Overflow用户
提问于 2020-02-29 14:55:36
回答 1查看 198关注 0票数 1

我试图分裂一个字符串,我从一个pdf文件中提取。这是绳子..。

"1.“Swadesabhimani”的第一任主编:(A) Vakkom Abdul Khadar Maulavi (C) K. Ramakrishna Pillai (B) Sir. C.P. Govinda Pillai (D) G. Parameswaran Pillai 2. "Mitra mela',一个秘密社团,由:(A) B.G. Tilak (C) Madan Lal Mitra (B) Sachin Sanya (D) Savarkar 3发起。'Lekshamveedu‘计划由:(A) A.K. Gopalan (C) Pattom发起。4.关于水(防止和控制污染)的法令:( A ) 1974 (B) 1981 (C) 2002 (D) 1986扩大形式:(A)印度国家电影学院(B)印度国家电影学院(C)印度国家电影资料馆(D)印度国家电影档案馆(D)印度国家电影管理局6.下列立法中禁止Sati并将其定为非法?(A) 1870年法令(B) 1930年“Sharada法”(C) 1795年“孟加拉管理法”(D) 1829年12月第十七号条例法:(A)查尔斯·梅特卡夫(C)约翰·亚当斯(B)韦尔斯利勋爵(D)黑斯廷斯勋爵“

问题是

( 1)第五个问题的问号不见了。

2)第六条有问号(?)而不是(:)在问题的末尾

( 3)第七次缺点()问号后

我想要的输出是针对每个问题-选项集的单独字符串。

"1.“Swadesabhimani”第一任主编:(A) Vakkom Abdul Khadar Maulavi (C) K. Ramakrishna Pillai (B)

"2. "Mitra mela“,由以下组织组成:(A) B.G. Tilak (C) Madan Lal Dhingra (B) Sachin三亚(D) Savarkar”

等等..。

这是我尝试过的

1.

代码语言:javascript
运行
复制
Pattern p=Pattern.compile("[0-9][.][a-zA-Z0-9]*");
String[] s=p.split(mcqString);

2.

代码语言:javascript
运行
复制
Pattern p=Pattern.compile("[0-9][.]?[a-zA-Z0-9]*[:|?][a-zA-Z0-9]*");
String[] s=p.split(mcqString);

和其他组合,但没有完全工作

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-29 15:32:47

您的问题都包含了([A-Z])的部分

一个选项是匹配所有不以括号开头的部分,而不是拆分。然后匹配以下所有不以括号开头的内容。

代码语言:javascript
运行
复制
^(?:(?!\([A-Z]\)).*\R)+(?:\([A-Z]\).*\R*)+

解释

  • 字符串的^开始
  • (?:非捕获群
    • (?!\([A-Z]\))负前瞻,断言右边不是()之间的字符A-Z
    • .*\R匹配除换行符和unicode换行符以外的任何字符。

  • )+关闭组并重复1+时间以获得至少1行
  • (?:非捕获群
    • \([A-Z]\).*\R*匹配()之间的字符A-Z,1+乘以任意字符和可选的unicode换行符序列

  • )+关闭组并重复1+时间以获得至少1行

在Java中

代码语言:javascript
运行
复制
final String regex = "^(?:(?!\\([A-Z]\\)).*\\R)+(?:\\([A-Z]\\).*\\R*)+";

Regex演示 x- Java演示

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60466383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档