有关如何使用正则表达式更改整行的任何建议在notepad ++中查找和替换?

时间:2012-07-31 17:58:30

标签: php xml

我有一个XML文档,其中有结束时间,我需要更改此格式

end="00:00:09:02">

到这个

end="00:09.02">

基本上前两个数字和冒号被删除,最后一个冒号被一个句号替换。

我有数百个要改变,并试图弄清楚如何使用某种脚本编辑它们,有没有人有任何建议?

以下是原始行:

    <p start="00:00:13:23" EndTimecode="00:00:17:02" Title='Let’s start with RIM and
the High Velocity Sector.'/>

以下是我最终需要做的事情:

    <p begin="00:13.23" end="00:17.02">Let’s start with RIM and
the High Velocity Sector.</p>

由于发现查找和替换是最佳选择,我已更新了我的问题。

1 个答案:

答案 0 :(得分:2)

一种方法是regexp。

Regexp:/(?:EndTimecode="[0-9]{2}):([0-9]{2}):([0-9]{2}):([0-9]{2})(?:")/

替换字符串:end="$1:$2.$3"

你会像这样使用它:

  1. 读取xml文件并将其存储到var(称之为$contents
  2. $contents = preg_replace('/(?:EndTimecode="[0-9]{2}):([0-9]{2}):([0-9]{2}):([0-9]{2})(?:")/', 'end="$1:$2.$3"', $contents);
  3. 使用$contents
  4. 中的新数据保存回文件

    首先创建备份或将其写入新的tmp文件!

    编辑:见上文。唯一的变化是在正则表达式中。 (?:end已更改为(?:EndTimecode

    Edit2:我希望他们看起来都一样。试试这个

    Regexp:/<p start="[0-9]{2}:([0-9]{2}):([0-9]{2}):([0-9]{2})" EndTimecode="[0-9]{2}:([0-9]{2}):([0-9]{2}):([0-9]{2})"\sTitle='(.+?)'/>/

    替换字符串:<p begin="$1:$2.$3" end="$4:$5.$6">$7</p>