2013-03-26 73 views
0

我使用应用程序在XML记录中的自由文本字段中查找特定文本模式。它使用正则表达式来识别模式,然后在XML中对其进行标记。对于一个特定的项目,如果我可以在我必须使用的模式之前添加2个字符27,那么这将是一个很好的时间保护程序(我正在处理大约1800万条记录)。可以将字符添加到字符串作为正则表达式的一部分(正则表达式)

这可以做到或者我只是要去漫长的路?

+0

您的意思是修改正则表达式为2个字符,然后27个变量字符,然后您当前的模式?顺便说一句,我的心痛在于以XML格式搜索18百万条记录。这就是像索引数据库那样的东西。 – 2013-03-26 00:33:42

回答

0

不,你不能有一个不存在的正则表达式匹配文本。正则表达式只能返回原始文本的一部分。

但是,如果您将其匹配到组中,则可以使用组名称获取有关您匹配内容的额外信息。

+0

那个sux。感谢你的回应,我认为这是一个很长的镜头。 – 2013-03-26 00:46:13

0

如果您想编辑XML文件,Regex不是正确的工具。相反,使用Python,Perl,Ruby,PHP,Java等现代语言和适当的XML解析器模块。如果你在Unix系统像贝壳,我建议xmlstarlet

也就是说,如果你想用替代先走,你可以尝试(在你自己的风险):

sed -i -r 's/987654/27&/g' files*.xml 

(使用只有-i切换只能修改原地

+0

我需要做的是在正在使用正则表达式找到的数字组的前面加上“27”。例如,在文本中,我可能会找到9876543.我需要添加“27”,以便它变为279876543. – 2013-03-26 00:41:48

+0

请参阅我编辑的帖子 – 2013-03-26 00:55:11