我有一个文本文件中的项目列表,如下所示:
Masterfile="DM.xml" Doc-Name="PCP0001 Protocol" group="FP Team"
Masterfile="DM.xml" Doc-Name="PCR0001 Report" group="FP Team"
Masterfile="DM.xml" Doc-Name="DCR0002 Review" group="FP Team"
我想将中间部分扩展为如下所示:
Masterfile="DM.xml" Doc="http://1.1.1.1/PCP0001.Protocol.doc" Doc-Name="PCP0001 Protocol" group="FP Team"
Masterfile="DM.xml" Doc="http://1.1.1.1/PCR0001.Report.doc" Doc-Name="PCR0001 Report" group="FP Team"
Masterfile="DM.xml" Doc="http://1.1.1.1/DCR0002.Review.doc" Doc-Name="DCR0002 Review" group="FP Team"
换句话说,我想使用 Doc-Name 并在其前面添加一个 URL 并用“。”替换空格。
有人能帮我吗?我有 900 个这样的,所以要仔细筛选一下。
这是我在 NotePad++ 中尝试过的:
我使用了这个查找表达式:
Doc-Name=[^"]*"([^"]+)"[^"]
并使用了这个替换表达式:
Doc="http://1.1.1.1/$1.doc" Doc-Name="$1"
这让我完成了 90%,但还不够。我不知道如何用句号替换 $1 内的空格。这将完成工作,我需要一些帮助。
答案1
如果有多个空格,则可以使用以下方法:
- Ctrl+H
- 找什么:
Doc-Name="([^"\h]+)\h+([^"\h]+)(?:\h+([^"\h]+))?(?:\h+([^"\h]+))?(?:\h+([^"\h]+))?(?:\h+([^"\h]+))?"
- 用。。。来代替:
Doc="http://1.1.1.1/$1.$2(?3.$3:)(?4.$4:)(?5.$5:)(?6.$6:).doc" $0
- 检查环绕
- 检查正则表达式
- Replace all
解释:
Doc-Name=" : literally
([^"\h]+) : group 1, 1 or more any character that is not a double quote or horizontal space
\h+ : 1 or more horizontal space
([^"\h]+) : group 2, 1 or more any character that is not a double quote or horizontal space
(?: : non capture group
\h+ : 1 or more horizontal space
([^"\h]+) : group 2, 1 or more any character that is not a double quote or horizontal space
)? : end group, optional
(?:\h+([^"\h]+))? : same as above
(?:\h+([^"\h]+))? : same as above
(?:\h+([^"\h]+))? : same as above
....... as many as you need
" : double quote
替代品:
Doc="http://1.1.1.1/ : literally
$1 : content of group 1
. : a dot
$2 : content of group 2
(?3.$3:) : conditional replacement, if group 3 exists replace by itself preceded with a dot
(?4.$4:) : same as above for group 4
(?5.$5:) : same as above for group 5
(?6.$6:) : same as above for group 6
....... as many as you need
.doc" : literally
$0 : a space then content of group 0 (ie. the whole match)
给出如下输入:
Masterfile="DM.xml" Doc-Name="PCP0001 Protocol abc def ghi jkl" group="FP Team"
Masterfile="DM.xml" Doc-Name="PCR0001 Report xyz" group="FP Team"
Masterfile="DM.xml" Doc-Name="DCR0002 Review" group="FP Team"
结果:
Masterfile="DM.xml" Doc="http://1.1.1.1/PCP0001.Protocol.abc.def.ghi.jkl.doc" Doc-Name="PCP0001 Protocol abc def ghi jkl" group="FP Team"
Masterfile="DM.xml" Doc="http://1.1.1.1/PCR0001.Report.xyz.doc" Doc-Name="PCR0001 Report xyz" group="FP Team"
Masterfile="DM.xml" Doc="http://1.1.1.1/DCR0002.Review.doc" Doc-Name="DCR0002 Review" group="FP Team"
答案2
明白了....哈哈
正如 barlop 指出的那样(感谢),将这个问题分解成几个步骤后就更容易了。
步骤 1. 按照 OP 中的说明添加 Doc="URL" 组件
第 2 步。这是一个多步骤
查找:Doc=(\".)\s(..doc 文件”(英文)
替换:Doc=\1.\2
使用 NotePad++ 下的全部替换,但根据需要多次使用它来替换所有空格。
完毕!