从正则表达式中的变量中排除某个字符串

时间:2013-06-13 08:50:23

标签: regex xslt

您好我有一个样式表,我使用xsl:analyze-string和以下正则表达式:

(&journal_abbrevs;)[\s ]*([0-9]{{4}})[,][\s ][S]?[\.]?[\s ]?([0-9]{{1,4}})([\s ][(][0-9]{{1,4}}[)])?

你不需要看整件事情:)

&安培; journal_abbrevs;看起来像这样:

"example-String1|example-String2|example-String3|..."

我需要知道的是排除& journal_abbrevs中的一个字符串;来自这个正则表达式。例如。我不希望example-String1匹配。

关于如何做到这一点的任何想法?

1 个答案:

答案 0 :(得分:0)

似乎XSLT正则表达式不支持look-around。所以我认为你不能得到一个解决方案,不涉及在你的正则表达式中写出journal_abbrevs的所有字符串。 Related question

为了尽量减少写出的数量,您可以将journal_abbrevs分成说journal_abbrevs1journal_abbrevs2journal_abbrevs3(或您决定使用多少)并且只写输出包含您要排除的字符串的那个。如果journal_abbrevs1包含字符串,那么您最终会得到类似的内容:

((&journal_abbrevs2;)|(&journal_abbrevs3;)|example-String2|example-String3|...)...

如果它支持look-around,您可以使用一个非常简单的方法:
(?!example-String1)(&journal_abbrevs;)...