0

以下是 XML 技术手册中使用的几个版本的 XREF 代码,3 位技术作者正在团队中工作。显然,如果它们与 XREF 语法一致,那就太好了,但事实并非如此:

<xref figid="FIG_011"/>, 1
<xref figid="figure041"/> 8  (Please notice this XREF is missing a comma following the ">")
<xref figid="figure_025"/>, 4  

当呈现为 PDF 时,上面的 XREF 代码如下所示:

图 3、1

图 19 8

图 30、4

现在的目标是在数字“1、8 和 4”之前添加单词“Item”。如果需要,还可以在 /> 后面加一个逗号。以下是 RegEx 需要输出的内容:

图 3,第 1 项

图 19,第 8 项

图 30,第 4 项

我需要 RegEx 来查找的是 XREF 代码的这两部分:

<xref figid="   Also:  "/>

我需要RegEx忽略的是:

开头“(左引号)和结尾”(右引号)内的所有文本。以及位于末尾的项目编号,例如“1、8 和 4”。所有这些字符从 FigID 到 FigID 都不同,因此需要被 RegEx 忽略。如果逗号已经存在,它也需要忽略它(但另一方面,如果它丢失了也添加一个)。

我需要 RegEx 替换为:

<xref figid="FIG_011"/>, Item 1
<xref figid="figure041"/>, Item 8 (Please notice the comma addition following the ">")
<xref figid="figure_025"/>, Item 4

你有它。我希望我的解释是清楚的,而不是令人困惑的。我打过的砖墙主要是两堵。

首先,如何使 RegEx IGNORE 字符从外部参照更改为外部参照实例,因此只针对保持一致的字符,例如:

<xref figid="   Also:  "/> 

其次,如何让 RegEx 知道何时添加逗号或何时不添加逗号,以便它显示在 PDF 中,如下例所示:

图 19,第 8 项

而不是这样:

图 19 项目 8

是否可以将此非此即彼的功能编码到正则表达式中?就此而言,我在 RegEx 中尝试做的任何事情都是可能的吗?我祈祷这是因为手册中有超过 700 个 XREF 需要更改。

4

1 回答 1

2

根据您的 XML 标记的结构,这对于正则表达式查找和替换可能是微不足道的。

首先,如何使 RegEx IGNORE 字符从外部参照更改为外部参照实例,因此只针对保持一致的字符,例如:

<xref figid="   Also:  "/>

您可以使用通配符匹配来表示属性中用引号引起.+?来的任何字符。figid正则表达式并没有忽略字符本身,而是不在乎它们是什么。无论如何它都会接他们。

要捕获并保留<xref/>标签及其figid可能的任何值,请将其包装在 中(),并$1稍后替换它。

其次,如何让 RegEx 知道何时添加逗号或何时不添加逗号,以便它显示在 PDF 中,如下例所示:

如果逗号存在,您可以使用,?它来选择匹配逗号。这可以被丢弃,无论是否有逗号,都可以用逗号代替。

寻找:

(<xref figid=".+?"/>),?

用。。。来代替:

$1, Item
于 2013-05-12T17:23:54.370 回答