1

単語の文字列をスキャンして、REGEX を使用して XSLT 2.0 スタイルシートで特定の単語 (大文字と小文字を区別しない) の存在を探しています。

繰り返し処理して、特定の文字列内に存在するかどうかを判断したい単語のリストがあります。

与えられたテキスト内の任意の単語に一致させたいが、単語内では一致せたくない(つまり、「d」の検索は一致してはfooなら、「 re 」の検索は一致してはならない)。foobarbar

XSLT 2.0 REGEX には単語の境界 ( \b) がないため、できる限り複製する必要があります。

4

2 に答える 2

4

繰り返しを避けるために交互を使用することができます:

<xsl:if test="matches($prose, concat('(^|\W)', $word, '($|\W)'),'i')">
于 2010-03-07T19:47:09.470 に答える
3

XSLT 2.0 プロセッサが Saxon 9 の場合、flag 属性を感嘆符で開始することにより、matches、tokenize、replace 関数で Java 正規表現構文 (\b を含む) を使用できます。

<xsl:value-of select="matches('all foo is bar', '\bfoo\b', '!i')"/>

最近、Michael Kay が XSL メーリング リストでそのオプションについて言及しました。

于 2010-03-08T11:38:09.263 に答える