我有一个文本文件(.cs文件),其中包含一些我想从文件内复制到文件同一行中其他位置的信息。
例如,我有类似的东西:
$($_.subfield2)
我希望将UniqueId之后的数字复制并放置在名称末尾的同一行上,就像这样
Random text here { Name = "Important - info", UniqueId = "1110100", More random text};
Random text here { Name = "More Important (info)", UniqueId = "1110101", More random text};
Random text here { Name = "Other Important info", UniqueId = "1110102", More random text};
.
.
.
Random text here { Name = "Other Important info 4/11", UniqueId = "2000110", More random text};
只要在引用的名称和唯一ID之后有一个空格。名称可以是任何东西,每个名称和每一行的UniqueId都是唯一的。这个任务有可能吗?我将尝试任何Windows程序。
答案 0 :(得分:1)
您可以使用任何支持Regex的文本编辑器来完成您要问的问题。在此示例中,我将使用Notepad ++。首先,我将描述要做的事情,然后在解释正则表达式的工作之后。
示例
Notepad++
打开文件。Ctrl+F
弹出Search and Replace
窗口。Wrap around
的框Regular expression
下选择Search Mode
Find What:
下插入Name = "(.*)", UniqueId = "(\d+)"
Replace with:
下插入Name = "$1 $2", UniqueId = "$2"
Replace all
。了解正则表达式
()
这些字符代表您要捕获的组。$1
代表您标记为()
的第一组$2
是同一件事,但需要第二组。\d
与any digit
相匹配。 +
后面的数字表示一个或多个数字。.
与any character
相匹配。点后面的*
表示匹配零个或多个字符。在搜索示例Name = "(.*)", UniqueId = "(\d+)"
中,我们有两组。在Name和UniqueId的引号之间匹配内容。
在替换示例Name = "$1 $2", UniqueId = "$2"
中,我们使用这些组将匹配的内容替换为新的内容。在这种情况下,新的是组$1
和组$2
的内容。