我正在尝试扫描一串单词,并使用REGEX在XSLT 2.0样式表中查找特定单词(不区分大小写)的存在。
我有一个单词列表,我想迭代并确定它们是否存在于给定的字符串中。
我希望在给定文字中的任何位置匹配单词,但我不想在单词中匹配(即搜索 {{ 1}} 匹配“foo
d”,搜索 foo
应该“strong bar
”上的 匹配。
XSLT 2.0 REGEX没有单词边界(bar
),所以我需要尽可能地复制它。
答案 0 :(得分:4)
您可以使用交替来避免重复:
<xsl:if test="matches($prose, concat('(^|\W)', $word, '($|\W)'),'i')">
答案 1 :(得分:2)
如果您的XSLT 2.0处理器是Saxon 9,那么您可以通过使用感叹号启动flag属性来使用Java正则表达式语法(包括\ b)和函数matches,tokenize和replace:
<xsl:value-of select="matches('all foo is bar', '\bfoo\b', '!i')"/>
Michael Kay最近在XSL邮件列表中提到了这个选项。