我使用一个应用程序在 XML 记录的自由文本字段中查找特定的文本模式。它使用正则表达式来识别模式,然后在 XML 中对其进行标记。对于一个特定的项目,如果我可以在我必须使用的模式之一前面添加 2 个字符 27,那将是一个很好的节省时间(我正在处理大约 1800 万条记录)。
这可以完成还是我只需要走很长的路?
我使用一个应用程序在 XML 记录的自由文本字段中查找特定的文本模式。它使用正则表达式来识别模式,然后在 XML 中对其进行标记。对于一个特定的项目,如果我可以在我必须使用的模式之一前面添加 2 个字符 27,那将是一个很好的节省时间(我正在处理大约 1800 万条记录)。
这可以完成还是我只需要走很长的路?
不,你不能有一个不存在的正则表达式匹配文本。正则表达式将只能返回作为原始文本一部分的文本。
但是,如果您匹配到组,您可能会使用组名称来获取有关您匹配的内容的额外信息。
如果您想编辑 XML 文件,Regex 不是正确的工具。相反,使用 Python、Perl、Ruby、PHP、Java 等现代语言和适当的 XML 解析器模块。如果你像 shell 一样在 Unix 中工作,我推荐xmlstarlet
也就是说,如果您想继续进行替换,可以尝试sed(风险自负):
sed -i -r 's/987654/27&/g' files*.xml
(仅使用-i
switch 仅用于就地修改)