我有一个包含以下格式的多个问题的文本:
Q1
Question text 1?
1. Answer A
2. Answer B (+1p)
3. Answer C
4. Answer D
Q2
Question Text 2?
1. Answer A (+1p)
2. Answer B
3. Answer C (+1p)
4. Answer D
Q3
Question Text 3
1. Answer A
2. Answer B
3. Answer C (+1p)
正确答案标有 (+1p)。 我想重新格式化它,以便在新的一行中陈述正确的答案,如下所示:
Q1
Question text 1?
1. Answer A
2. Answer B
3. Answer C
4. Answer D
Answer: B
Q2
Question Text 2?
1. Answer A
2. Answer B
3. Answer C
4. Answer D
Answer: A, C
Q3
Question Text 3
1. Answer A
2. Answer B
3. Answer C
Answer: C
这甚至可以在 Notepad++ 中完成吗?
最佳答案
救援正则表达式的魔力:
我们需要一个两步走的方法,
追加
答案:
- 查找内容:
((\R\d\.\h+Answer\h+[A-Z]+\h?(\(\+1p\))?)+)
- 替换为:
\1\r\n答案:
- 检查正则表达式
- 点击替换或全部替换
- 查找内容:
现在我们收集答案:
- 查找内容:
Answer ([A-Z])\h\(\+1p\)(.*?Answer: [A-Z ]*)
- 替换为:
回答\1\2\1
- 检查正则表达式
- 检查。匹配换行符
- 点击替换或全部替换。继续单击,一个 block 中有多个答案的情况需要与 block 中的答案一样多的全部替换。观察对话框状态栏中的消息。它会在您完成时告诉您。
- 查找内容:
在第一步中,查找尝试匹配完整的答案 block 并将其捕获到 \1
中。替换仅在 block 后添加一行。
第二步尝试(针对每个 block )捕获从第一个 (+1p)
到 Answer:
的行。该发现使得 (+1p)
not 已被识别。答案的 answer 字符 在\1 中捕获,以下答案直到 Answer:
行在\2 中捕获,我们附加 answer char 在 '\1' 到 'Answer:' 行。 (只需进行一些查找,查看匹配的内容,然后进行一些替换,以查看它如何与具有多个标记答案的 block 一起使用。您可以撤消以重播替换。)
关于php - 文本转换 : Adding text according to previous occurrence,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34860851/