我有一个名为tester.txt的sedfile,其中包含此代码。
s/\(\\ref\s*\) \(\w*,\) \(``\(\w*\s*\)*,\) \(.*\)/\1 ll\2 ll\3 dd\4/
/^\ref{A-Za-z}*/p
当我在下面的文本上运行这些命令时,我得到一些不正确的输出。我不明白为什么"好吧"部分正在重复。不应该"。*"与其他文本相匹配?不知道为什么会这样。任何帮助将不胜感激。
输出:
\ref llthis, ll``is hard af alright, ddalright
原文:
\ref this, ``is hard af alright, finally,
答案 0 :(得分:0)
在:
\(\\ref\s*\) \(\w*,\) \(``\(\w*\s*\)*,\) \(.*\)
只计算您的捕获组:
1: \(\\ref\s*\)
2: \(\w*,\)
3: \(``\(\w*\s*\)*,\)
4: \(\w*\s*\)
5: \(.*\)
第4个(后面称为\4
)位于第3个(\3
)内,因此重复。你没有显示你实际期望得到的输出所以这是一个猜测,但也许你想要:
\1 ll\2 ll\3 dd\5
而不是:
\1 ll\2 ll\3 dd\4