XSLT 2.0とRegexを使用してテキスト内で単語を見つける方法(どちらが bワード境界がありません)?
-
25-09-2019 - |
質問
私は一連の単語をスキャンして、regexを使用してXSLT 2.0スタイルシートに特定の単語(ケース非感受性)の存在を探しようとしています。
繰り返して、特定の文字列内に存在するかどうかを判断したい単語のリストがあります。
指定されたテキスト内のどこにでも一致したいのですが、 一致したくない 内部 単語 (つまり、検索 foo
したほうがいい いいえ マッチオン」foo
D」と検索 bar
したほうがいい いいえ 「rebar
").
XSLT 2.0 regexには単語の境界がありません(\b
)、そのため、できる限り複製する必要があります。
解決
繰り返しを避けるために、代替を使用できます。
<xsl:if test="matches($prose, concat('(^|\W)', $word, '($|\W)'),'i')">
他のヒント
XSLT 2.0プロセッサがSaxon 9の場合、java正規表現構文( bを含む)を関数マッチで使用することができます。
<xsl:value-of select="matches('all foo is bar', '\bfoo\b', '!i')"/>
Michael Kayは、最近そのオプションにXSLメーリングリストで言及しました。
所属していません StackOverflow