首页 > 解决方案 > 如何将正则表达式用于数字后的字符

问题描述

我想选择@reId在数字()之后有一个字符fig-FigF.3A

输入:

<p type="TOC_Level Two Entry">
  <doclink refType="anchor" refId="fig-FigF.3A">Figure F.3A—Text<c
      type="TOC_Leader Dots"><t/></tps:c></tps:doclink>
  <ref format="TOC Page Number" refType="anchor" refId="fig-FigF.3A"/>
<p>

输出应该是:

<p type="TOC_Level Two Entry"><doclink refType="anchor" 
  refId="fig-FigF.3A">F.3A<tps:t/>Text<c 
  type="TOC_Leader Dots"><t/></c></tps:doclink><ref
   format="TOC Page Number" refType="anchor" refId="fig-FigF.3A"/></tps:p>

试过的代码:

我试图用这个 regex 解决这个问题^(Figure )(\d+|[A-Z].\d+)(—)(.*)。但它不起作用。

我该如何解决这个问题?我正在使用 xslt 2.0

标签: xslt

解决方案


因此,试图从中提取明确的需求声明,您似乎希望输入“fig-FigF.3A”产生输出“F.3A”。或者,也许您想将“图 F.3A-文本”视为输入?一方面,您说您正在选择@reId属性 - 您的输入中不存在该属性;另一方面,您对解决方案的尝试是寻找出现在文本节点中的文本“Figure”,而不是属性。

所以我认为我们需要一个更清晰的需求声明。

将此作为需求陈述的另一个问题是您只给出了一个示例,而不是一般规则。在您的问题“数字后有一个字符”中有一个一般规则的提示。但是,这是什么意思?您的示例似乎正在寻找模式字母点数字,这与您对问题的描述完全不匹配。

抱歉,版主,这不是答案,而是对问题的评论。它开始是一个答案,直到我意识到这个问题并不清楚,但到那时评论太长了。


推荐阅读