Como encontrar uma palavra dentro do texto usando o XSLT 2.0 e Regex (que não possui b limite da palavra)?

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

Pergunta

Estou tentando digitalizar uma série de palavras e procurar a presença de uma palavra específica (insensível a casos) em uma folha de estilo XSLT 2.0 usando o regex.

Tenho uma lista de palavras que desejo iterar e determinar se elas existem ou não dentro de uma determinada string.

Eu quero combinar com uma palavra em qualquer lugar dentro do texto especificado, mas Eu não quero combinar dentro de uma palavra (ou seja, uma pesquisa por foo deve não combinar em "fooD "e uma busca por bar deve não combinar em "rebar").

XSLT 2.0 Regex não possui um limite de palavra (\b), então eu preciso replicá -lo da melhor maneira possível.

Foi útil?

Solução

Você pode usar a alternância para evitar a repetição:

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

Outras dicas

Se o seu processador XSLT 2.0 for Saxon 9, você poderá usar a sintaxe da expressão regular Java (incluindo b) com as correspondências de funções, tokenize e substituir iniciando o atributo de sinalização com uma marca de exclamação:

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

Michael Kay mencionou essa opção recentemente na lista de discussão XSL.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top