Existe uma maneira simples de ignorar o espaço em branco em uma string de destino ao pesquisar correspondências usando um padrão de expressão regular? Por exemplo, se minha pesquisa for por "gatos", eu gostaria que "c ats" ou "ca ts" correspondessem. Não posso remover o espaço em branco de antemão porque preciso encontrar o índice inicial e final da correspondência (incluindo qualquer espaço em branco) para destacar essa correspondência e qualquer espaço em branco precisa estar lá para fins de formatação.
regex
whitespace
Steven
fonte
fonte
^([a-z]\s*)+$
Dirigindo o comentário de Steven à resposta de Sam Dufel
Isso deve resolver o problema:
Veja esta página para todas as diferentes variações de 'gatos' que correspondem.
Você também pode resolver isso usando condicionais , mas eles não são suportados no tipo javascript do regex.
fonte
new RegExp('cats'.split('').join('(?:\n\s*)?'))
Embora a resposta aceita seja tecnicamente correta, uma abordagem mais prática, se possível, é apenas retirar os espaços em branco da expressão regular e da string de pesquisa.
Se você quiser pesquisar "meus gatos", em vez de:
Apenas faça:
Aviso: você não pode automatizar isso na expressão regular apenas substituindo todos os espaços por strings vazias porque eles podem ocorrer em uma negação ou tornar sua expressão regular inválida.
fonte
Você poderia colocar
\s*
entre cada caractere em sua string de pesquisa, então se você estivesse procurando por um gato, você usariac\s*a\s*t\s*s\s*s
É longo, mas você pode construir a string dinamicamente, é claro.
Você pode vê-lo funcionando aqui: http://www.rubular.com/r/zzWwvppSpE
fonte
Se você só deseja permitir espaços, então
deve fazer isso. Para permitir também guias, use
Remova as
\b
âncoras se também quiser encontrarcats
palavras comobobcats
oucatsup
.fonte
Esta abordagem pode ser usada para automatizar isso (a solução exemplar a seguir está em python, embora obviamente possa ser transferida para qualquer linguagem):
você pode remover o espaço em branco de antemão E salvar as posições dos caracteres que não são de espaço em branco para que possa usá-los posteriormente para descobrir as posições de limite da string correspondentes na string original, como a seguir:
Se você quiser ir mais longe, pode construir o objeto de correspondência e retorná-lo em vez disso, portanto, o uso deste auxiliar será mais útil.
E o desempenho desta função também pode ser otimizado, este exemplo é apenas para mostrar o caminho para uma solução.
fonte