【问题标题】:regex for string substitution [closed]用于字符串替换的正则表达式 [关闭]
【发布时间】:2016-11-27 06:45:38
【问题描述】:

我有一个包含一些数据记录的文件,如下所示:

<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.mylab.org/mydata/resource/1234502851114AA> <http://www.w3.org/2003/01/geo/wgs84_pos#lat> "43.721979606737897" .

在数字末尾添加^^&lt;http://www.w3.org/2001/XMLSchema#float&gt;

<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> .

你能帮我用一个正则表达式来帮助我进行替换吗?

实际的正则表达式:

(pos#long>\s"\d)

它只捕获pos#long&gt; "1

非常感谢

【问题讨论】:

  • 到目前为止你尝试过什么?你在这里已经足够长的时间了,你明白这不是你放弃要求而其他人为你工作的地方。

标签: java python regex replace string-substitution


【解决方案1】:

好吧,为了匹配您想要替换的行,您想要的正则表达式实际上比您拥有的要复杂一点:(.+wgs84_pos#(?:long|lat).+) \.。这将匹配并捕获字符串中的现有文本。

在 Perl 中,您的替换代码看起来像这样(Perl 脚本的其余部分由您决定):

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

这样做是捕获整个第一行,减去末尾的句点,然后在附加句点之前将其与额外的 sn-p 一起转储到新行中。

【讨论】:

  • 我用你的正则表达式替换了 Sublime。这个正则表达式很完美,非常感谢!
  • 我很乐意提供帮助。
【解决方案2】:

使用(&gt;\s"\d*\.{0,1}\d*"\s\.$),如果它们位于行尾,您可以找到这两个数字。然后,您可以将^^&lt;http://www.w3.org/2001/XMLSchema#float&gt; 附加到该行。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-17
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 2011-11-03
    • 1970-01-01
    • 2018-07-13
    相关资源
    最近更新 更多