2016-07-23 303 views
-3

我有一个包含一些数据记录这样的文件:正则表达式字符串替换

<http://www.mylab.org/mydata/resource/1234502851114AA> <http://www.w3.org/2003/01/geo/wgs84_pos#long> "10.983007809025084" . 
<http://www.mylab.org/mydata/resource/1234502851114AA> <http://www.w3.org/2003/01/geo/wgs84_pos#lat> "43.721979606737897" . 
<http://www.mylab.org/mydata/resource/1234502851114AA> <http://purl.org/dc/terms/identifier> "1234502851114AA" . 
<http://www.mylab.org/mydata/resource/1234502851114AA> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.mylab.org/mydata/schema#Node> . 
<http://www.mylab.org/mydata/resource/1234502851114AA> <http://www.disit.org/km4city/schema#nodeType> "STRING_STRING_STRING" . 

在各该条目我有一个脚本(Java/Python或其他)来代替这样的线的:

<http://www.mylab.org/mydata/resource/1234502851114AA> <http://www.w3.org/2003/01/geo/wgs84_pos#long> "10.983007809025084"^^<http://www.w3.org/2001/XMLSchema#float> . 
<http://www.mylab.org/mydata/resource/1234502851114AA> <http://www.w3.org/2003/01/geo/wgs84_pos#lat> "43.721979606737897"^^<http://www.w3.org/2001/XMLSchema#float> . 

你能帮我:

<http://www.mylab.org/mydata/resource/1234502851114AA> <http://www.w3.org/2003/01/geo/wgs84_pos#long> "10.983007809025084" . 
<http://www.mylab.org/mydata/resource/1234502851114AA> <http://www.w3.org/2003/01/geo/wgs84_pos#lat> "43.721979606737897" . 

在号码的末尾添加^^<http://www.w3.org/2001/XMLSchema#float>与正则表达式,帮助我的替代?

实际的正则表达式:

(pos#long>\s"\d) 

它只捕获pos#long> "1

谢谢你这么多

+1

你到目前为止尝试过什么?你在这里已经足够长的时间来理解,这不是你放弃你的需求的地方,而是其他人为你做的工作。 – GhostCat

回答

1

好,以适应所要更换的线,你想要的正则表达式实际上是有点多比你拥有的复杂:(.+wgs84_pos#(?:long|lat).+) \.。这将匹配并捕获字符串中的现有文本。

在Perl中,你的替换代码会是这个样子(我离开Perl脚本起来的其余部分给你):

$line =~ s/(.+wgs84_pos\#(?:long|lat).+) \./$1^^<http:\/\/www.w3.org\/2001\/XMLSchema#float> ./g 

这样做有什么拍摄第一线的全部,减去期末,然后在追加期间之前将它随同您的附加片段一起转储到新行中。

+0

我用你的正则表达式来替换Sublime。这个正则表达式非常完美,非常感谢! – michele

+0

我很乐意提供帮助。 –

1

随着(>\s"\d*\.{0,1}\d*"\s\.$)你可以找到这两个数字,如果他们在行的末尾。然后,您可以将^^<http://www.w3.org/2001/XMLSchema#float>附加到该行。

或者,您可以替换搜索(>\s"\d*\.{0,1}\d*"\s\.$)并替换为$1 ^^<http://www.w3.org/2001/XMLSchema#float>(使用记事本++测试)。