XSLT 2.0とRegexを使用してテキスト内で単語を見つける方法(どちらが bワード境界がありません)?

StackOverflow https://stackoverflow.com/questions/2397574

質問

私は一連の単語をスキャンして、regexを使用してXSLT 2.0スタイルシートに特定の単語(ケース非感受性)の存在を探しようとしています。

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

指定されたテキスト内のどこにでも一致したいのですが、 一致したくない 内部 単語 (つまり、検索 foo したほうがいい いいえ マッチオン」fooD」と検索 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メーリングリストで言及しました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top