开发者

How to find a word within text using XSLT 2.0 and REGEX (which doesn't have \b word boundary)?

开发者 https://www.devze.com 2022-12-22 17:13 出处:网络
I am attempting to scan a string of words and look for the pre开发者_如何学Pythonsence of a particular word(case insensitive) in an XSLT 2.0 stylesheet using REGEX.

I am attempting to scan a string of words and look for the pre开发者_如何学Pythonsence of a particular word(case insensitive) in an XSLT 2.0 stylesheet using REGEX.

I have a list of words that I wish to iterate over and determine whether or not they exist within a given string.

I want to match on a word anywhere within the given text, but I do not want to match within a word (i.e. A search for foo should not match on "food" and a search for bar should not match on "rebar").

XSLT 2.0 REGEX does not have a word boundary(\b), so I need to replicate it as best I can.


You can use alternation to avoid repetition:

<xsl:if test="matches($prose, concat('(^|\W)', $word, '($|\W)'),'i')">


If your XSLT 2.0 processor is Saxon 9 then you can use Java regular expression syntax (including \b) with the functions matches, tokenize and replace by starting the flag attribute with an exclamation mark:

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

Michael Kay mentioned that option recently on the XSL mailing list.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号