我有一個類似于以下內容的測驗:
1: How old am I?
A: 8 days
B: 75
C: 100
D: 99correct
xxxxxxxxxxxx
2: What is your favorite color?
A: blue
B: greencorrect
C: red
D: blue
xxxxxxxxxxxx
在每種情況下,正確答案都通過在正確答案末尾使用“正確”一詞來標記。
我想要做的是采取正確的答案并將其添加到 xxxxxxxxxxxx 之后,使其顯示為:
xxxxxxxxxxxx B: Green.
我目前在 Textpad 中使用以下正則運算式以找到正確答案
FIND: ([A-D]:(?s).*correct(?s).*xxxxxxxxxxxx)
REPLACE: \1xxxxxxxxxxxx
不幸的是,它不起作用,因為它用整個測驗替換了整個測驗,然后添加了 xxxxxxxxxxx
但主要問題是如何替換實際上未指定為“查找文本”的文本?
謝謝你。
附注。兩個答案似乎錯過了這一點,所以沒有澄清這可能是我的錯:
它不應該在答案之前添加額外的 xxxxxxxxxxxx,而是復制該行,例如。B:在該問題的最后一個 xxxxxxxxxxxx 之后綠色更正。
以下是上述示例的示例輸出:
1: How old am I?
A: 8 days
B: 75
C: 100
D: 99correct
xxxxxxxxxxxx D: 99
2: What is your favorite color?
A: blue
B: greencorrect
C: red
D: blue
xxxxxxxxxxxx B: green
顯然,正確答案可能是 A、B、C 或 D。
uj5u.com熱心網友回復:
您可以使用
(?m)^([A-D]:.*?)correct$((?:\n.*)*?\nx{3,})
請參閱正則運算式演示。替換模式應該是\1\2 \1.
詳情:
(?m)- 多行行內修飾符(在文本編輯器中可能是多余的)^- 一行的開始([A-D]:.*?)- 第 1 組:A,B,CorD, 然后是 a ,然后是:除換行符以外的任何零個或多個字符,盡可能少correct——correct一句話((?:\n.*)*?\nx{3,})- 第 2 組:(?:\n.*)*?- 零或更多行,但盡可能少\n- 換行符x{3,}- 三個或更多x字符。
uj5u.com熱心網友回復:
我從來沒有特別使用過 Textpad,但在 Sublime Text 3 中你可能想要做這樣的事情:
FIND: ^([A-D]:\s\S.*?)correct$
REPLACE: xxxxxxxxxxxx $1.
它將把你的例子變成:
<...>
xxxxxxxxxxxx D: 99.
<...>
xxxxxxxxxxxx B: green.
<...>
請注意,由于我使用^和$(行的開頭和結尾),如果您的編輯器要求您啟用多行模式,如果默認模式不適合您,請嘗試啟用它。
uj5u.com熱心網友回復:
試試這個查找:([A-D]:[\w ]*correct)
替換:xxxxxxxxxxxx \1
輸出:
1: How old am I?
A: 8 days
B: 75
C: 100
xxxxxxxxxxxx D: 99correct
xxxxxxxxxxxx
2: What is your favorite color?
A: blue
xxxxxxxxxxxx B: greencorrect
C: red
D: blue
xxxxxxxxxxxx
Regex101 演示
告訴我它是否對你不起作用...
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/323642.html
