用于选择Quzi Anwsers的Java正则表达式
我需要一个java正则表达式的帮助。 我想选择一个测验问题的答案 问题是答案可能会超过几行,有换行符等。我设法选择了最多两行的问题,但没有超过几行 一个问题的例子 问题文本…等等等等 布拉 A.用于选择Quzi Anwsers的Java正则表达式,java,regex,Java,Regex,我需要一个java正则表达式的帮助。 我想选择一个测验问题的答案 问题是答案可能会超过几行,有换行符等。我设法选择了最多两行的问题,但没有超过几行 一个问题的例子 问题文本…等等等等 布拉 A. 这是空白文本 B. 这甚至是空白文本 C.您知道更多的空白文本 D. 空白文本 空白文本 空白文本 答案至少有4种,最多6种 我做了很多尝试- 我目前的成绩 ^[A-G]\.[\s]*^.*$ 但只显示字母后的第一行 ^[A-G]\.[\s]*^.*$[\s]+[^. *$]+.* 但是,这仅适用
这是空白文本 B.
这甚至是空白文本 C.
您知道更多的
空白文本 D.
空白文本
空白文本
空白文本
答案至少有4种,最多6种 我做了很多尝试- 我目前的成绩
^[A-G]\.[\s]*^.*$
但只显示字母后的第一行
^[A-G]\.[\s]*^.*$[\s]+[^. *$]+.*
但是,这仅适用于具有多行的响应
带多行和不带Dotall
我想从字母[AG]中选择一条空行。
此外,答案E和G只能是可选的
搜索结果:其他实验为
([A]\.*)([B]\.*)([C]\.*)([D]\.*)
使用Dotall-可以很好地解决4个问题,但如何使E和G成为可选的
[B]\.[^\n\r]*[\s]*([^\n\r]*\s*[^\n\r]*?\s*[^\n\r]*)?
如果问题有两行,那就开始吧。很明显 有什么想法吗 @Java代码
private void getQuestionAnwser(String question) {
String patternQuestion="^[A-G]\\.[\\s](?:[^\\r\\n]+(?:\\r?\\n|$))*";
Pattern pattern = Pattern.compile(patternQuestion,Pattern.MULTILINE);
Matcher matcher = pattern.matcher(question);
matcher.matches();
// check all occurance
while (matcher.find()) {
matcher.start();
matcher.end();
questionAnwsers.add(matcher.group(0));
System.out.println(matcher.group(0));
}
String anwser=question.substring(question.indexOf("Answer:"));
questionAnwsers.add(anwser);
}
输出:
A
B
C
D.最简单的方法可能是匹配到第一个空行或输入端
^[A-G]\.[^\n]*\n(?:[^\n]+(?:\n|$))*
和处理dos行结尾
^[A-G]\.[^\r\n]*\r?\n(?:[^\r\n]+(?:\r?\n|$))*
谢谢你的回答。看起来我的文本格式不好。这里没有新行,而是先有一个空格,然后是新行。不幸的是,这在Java中似乎不起作用。我使用该工具进行了测试,并在我的帖子中添加了Java代码。但是链接的结果是一样的。事实上,你的问题是
[\s]
可以匹配空格或第一个换行符,第一行可以用不同的方式处理:使用*
量词(0次或更多次,而不是+
1次或更多次),更新答案就是这样!非常感谢你