Tem certeza? Fico um pouco surpreso com isso. Eu pensaria que, se sua regex fosse gulosa o suficiente, você conseguiria corresponder. Observe que remover o ponto dos caracteres de limite quebra a criação de links para palavras no final da frase.
Fiz um pequeno teste com sua regex abaixo no regex101.com e parece funcionar com os caracteres de limite atuais, veja regex101: build, test, and debug regex
Observe que, se eu entendi seu propósito corretamente, você pode precisar transformar alguns de seus grupos de captura em grupos sem captura com (?:)
A incapacidade de usar | é muito irritante, concordo. Observe que para a parte ID|id você pode simplesmente usar o modificador i para tornar a regex insensível a maiúsculas e minúsculas. Para os números, se você realmente precisar do intervalo exato entre 1-10 e 1-100, então é complicado, relaxar para 1-19 e 1-199 tornaria mais fácil.
Aqui está sua regex com grupos sem captura que acho que devem funcionar
Encontrei dois problemas principais com as palavras observadas integradas
não é possível adicionar regex complexas: Ocorreu um erro: Palavra muito longa (máximo é 100 caracteres)
não é possível usar caracteres arbitrários como limite de palavra: nomeadamente sublinhado
também a incapacidade de editar regras ou alterar a ordem de execução é menos que ideal
PR para o componente expõe limites de palavras ao usuário, e não há problemas com regex longas (além da incapacidade de usar |, que também é abordada no PR).
Caso contrário, as palavras observadas funcionam perfeitamente, e se estes puderem ser abordados no núcleo, sou totalmente a favor.
Palavras observadas não respeitam unicode, elas tratam todos os caracteres unicode como limites de palavras (ao usar \b, mas isso é esperado, eu acho).
E mais (executando alguns casos de teste através de palavras observadas e encontrei estes dois):
A palavra observada \"\\bid\\(d+)\\b\" é uma expressão regular inválida. (verdadeiro, mas ainda adiciona a regra)
\\bid\\s?(\\d+)\\b → https://example.com/id$1 linkifica para https://example.com/id%241 (adiciona $1 codificado em URL em vez de fazer a substituição)
Olá, obrigado por desenvolver este tema incrível, adorei muito! Você poderia lançá-lo para que todos os usuários possam usá-lo? E não apenas administradores
Este componente de tema que você vinculou é uma adaptação do Sam que fiz como uma solução alternativa para uma necessidade que você descreveu em outro tópico.
São componentes de tema simples que apenas alteram a forma como essas palavras são renderizadas em uma postagem (o do Sam converte palavras específicas em links, o meu converte palavras específicas em imagens) com base nas configurações do componente de tema, que são gerenciadas apenas por administradores.
O recurso que você descreve não pode ser feito em um componente de tema, seria necessário um plugin para armazenar um conjunto de (palavra, URL da imagem) por usuário no banco de dados e a conversão de palavra para imagem deveria ser feita no lado do servidor, ao construir o conteúdo da postagem cozida (como HTML). Isso não pode ser feito em um componente de tema, que é apenas código frontend/client-side (se você contratar alguém para fazer este trabalho, é crucial que eles entendam esses detalhes).
Isso está fora do escopo deste componente de tema e exigiria um trabalho muito mais complexo. A sugestão é postar os detalhes de como você deseja que este recurso se comporte em Marketplace e você pode contratar alguém aqui com experiência prévia com os internos do Discourse para ajudá-lo.
Já foi levantado muitas vezes neste tópico, mas gostaria de verificar novamente; existe alguma forma de restringir isto a uma determinada categoria ou excluir categorias? Gostaria de usar isto na nossa categoria para iniciantes para ter links para todos os termos básicos que os novatos precisam aprender, mas em outras áreas, estes seriam apenas irritantes para os utilizadores experientes. Obrigado!
O problema com palavras observadas é que uma palavra observada é vinculada tantas vezes quanto a palavra observada aparece em uma postagem. Isso faz uma bagunça.
@Canapin você ignorou meu problema: não se trata de palavras repetidas, mas de substituição de padrão repetida de uma única palavra: a URL contém o padrão a ser substituído duas vezes.
Como a opção de substituição de padrão /g é o padrão no plugin, ela deve ser aplicada a todas as ocorrências de $1 na substituição, não apenas à primeira.
É um caso diferente de ter a palavra-chave aparecendo várias vezes em uma frase, linha ou parágrafo. A substituição deve levar em conta múltiplas ocorrências da seleção.
Eu estava respondendo ao Sam sobre palavras observadas.
Bom saber que o linkify só faz uma, mas adoraria uma por postagem. Talvez eu tenha que experimentar isso hoje, palavras observadas são insuportáveis às vezes quando encontra uma correspondência.