我有一个类似于下面的测试:
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
但是主要的问题是,我如何替换实际上没有指定为"查找文本"的文本?
谢谢。
p。两个答案似乎忽略了这一点,所以这可能是我的错,没有澄清:
不应该在答案前添加额外的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。
可以使用
(?m)^([A-D]:.*?)correct$((?:n.*)*?nx{3,})
参见regex演示。替换图案应为12 1
。
细节:
(?m)
—多行内联修饰符(在文本编辑器中可能是多余的)^
-行起始([A-D]:.*?)
-组1:A
,B
,C
或D
,然后是:
,然后是除换行符以外的任何零或多个字符,越少越好correct
- acorrect
字((?:n.*)*?nx{3,})
-第二组:(?:n.*)*?
-零行或多行,但尽可能少n
-一个换行字符x{3,}
-三个或多个x
字符。
我从来没有特别使用过Textpad,但在Sublime Text 3中,你可能想做这样的事情:
FIND: ^([A-D]:sS.*?)correct$
REPLACE: xxxxxxxxxxxx $1.
它会把你的例子变成:
<...>
xxxxxxxxxxxx D: 99.
<...>
xxxxxxxxxxxx B: green.
<...>
请注意,由于我使用^
和$
(一行的开头和结尾),如果您的编辑器要求您启用多行模式,如果默认模式不适合您,请尝试启用它。
试试这个查找:([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
<<p>Regex101演示/strong>
如果它不适合你,告诉我…