【发布时间】:2013-12-07 10:31:58
【问题描述】:
感谢您抽出宝贵的时间阅读本文,如果这有点令人困惑、补救或之前曾被问过(广泛搜索,结果有限),请立即道歉。
我正在使用古老的软件进行编辑,如果您熟悉 HomeSite 5,它允许使用脚本。
我的困惑如下:
我想隔离多个文本选择。我目前正在使用(冗长的)正则表达式来执行此操作,该表达式捕获
certain特定设置日期(在本例中为“2030-12-31”)之后的所有内容,直到它到达某个标签(在这种情况下]]<content>)。到目前为止,我已经做到了。然后,我希望仅在那些先前找到的文本选择中删除它包含的所有
<span>标记。但是,我希望保留其他文本部分中的<span>标记(例如那些分配较早日期的标记)。
我可以单独执行这两个功能,隔离特定部分或删除所有<span> 标签,我觉得只有一个我不知道的链接可以让我在另一个中运行一个。
再次道歉,如果答案很简单;我对脚本和正则表达式的了解充其量是有限的。我一直在使用 Jscript 完成大部分工作,但我不确定 HomeSite 是否接受其他格式 - 我愿意接受多种解决方案!
TLDR:仅在某些选择中搜索和替换,由紧接在前的正则表达式指定。
编辑 1: 请参阅下面用于隔离所需部分的表达式。第一个是整个表达式。第二个是捕获内容的容器。:
/<version recordId="([0-9]{4,})" start="2030-12-31"([^>]*)>([^<]*)<title><!\[CDATA\[<span class="uk">([^<]*)<\/span>\]\]><\/title>([^<]*)<number><!\[CDATA\[<span class="uk">([0-9]{1,3})\.<\/span>\]\]><\/number>([^<]*)<content><!\[CDATA\[([^]]*)\]\]><\/content>([^<]*)<\/version>/g;
..<content><!\[CDATA\[([^]]*)\]\]></content>..
在此我想修改如下:
<span class="uk">content</span>
content
现在我已经在公共场合输入了它,我知道这是一个正则表达式的恐怖表演,我向 stackoverflow 的优秀编码人员道歉,甚至不得不看它!
编辑 2: 请参阅下面的所需输出示例:
<version recordId="1234" start="2012-01-01"><stuffhere...<content><![CDATA[[
<span class="uk">content1</span>
<span class="uk">content2</span>
]]</content>
</version>
<version record="4231" start="2030-12-31"><stuffhere...<content><![CDATA[[
<span class="uk">content1</span>
<span class="uk">content2</span>
]]</content>
</version>
变成
<version recordId="1234" start="2012-01-01"><stuffhere...<content><![CDATA[[
<span class="uk">content1</span>
<span class="uk">content2</span>
]]</content>
</version>
<version record="4231" start="2030-12-31"><stuffhere...<content><![CDATA[[
content1
content2
]]</content>
</version>
n.b:感谢 Hannele 早期的格式更正。
【问题讨论】:
-
您能否提供一些示例输入、所需的输出以及您已有的正则表达式?
-
following a certain date: 正则表达式对于这种工作来说不够强大。您最多可以像您尝试过的那样精确匹配一个日期,但您将无法匹配 youngest 日期。它还能满足您的需求吗? -
@sp00m,感谢您浏览这个问题。抱歉,如果上面的文字墙完全不清楚:分配给我要编辑的内容的日期将始终是“开始 =“2030-12-31”。我在使用 RegEx 时没有遇到任何问题,尽管时间很长,但可以选择正确的部分。当我只想在这些部分中编辑内容时,麻烦就开始了。日期不同的部分,即 'start="2012-01-01"' 或 'start="1998-29-02"' 将被忽略。再次感谢,伙计。
标签: javascript regex search replace jscript