Auto-tag em string atua em *string*

Esse bug foi descoberto quando eu tinha uma especificação de auto-tag em uma string curta, por exemplo, “art”. O resultado marcou automaticamente tópicos com “artificial”, etc.

A propósito: o recurso “testar” na página de especificação de auto-tag funciona corretamente (para auto-tag em “art”, “artificial” não gera uma tag no teste).

O bug provavelmente não foi notado porque talvez seja incomum fazer auto-tag em uma palavra curta monitorada.

4 curtidas

Acho que o @codinghorror também notou isso. Está na nossa lista para resolver.

4 curtidas

Corrigi este bug e agora os links e as palavras observadas em tags atuarão sobre palavras inteiras.

Há uma exceção quando watched_words_regular_expressions está habilitado.

4 curtidas

Obrigado pela sua resposta, Bianca.

Acho que tinha watched_word_regular_expression ativado por padrão e não percebi que isso quebrava a “ação em palavras inteiras”. É necessário que a ação em palavras inteiras seja incompatível com expressões regulares??

Ou seja, devo ainda considerar isso como um bug ou uma restrição necessária causada por outro recurso?

Até agora, ainda estou pensando nisso como um bug. Não vejo nenhuma razão pela qual a análise de palavras inteiras sem regex deveria ser incompatível com a análise regex quando uma regex é especificada.

Olá Norman,

Se você estiver usando regex para algumas das suas palavras monitoradas, então isso se aplica a todas. Assim, se o regex estiver ativado e você tiver a tag automática configurada para art, espera-se que artificial seja marcado. Para procurar apenas a palavra art, use o metacaractere de limite de palavra \b. No caso de art, isso seria como \bart\b

3 curtidas

Devemos garantir que a interface nos informe quando isso estiver ativado, já que o significado do campo é bastante diferente quando ativado.

É algo como “CAPS LOCK ATIVADO” ao digitar sua senha, etc.

3 curtidas

Muito obrigado a todos. Peço desculpas se minha compreensão um tanto quanto medíocre de expressões regulares foi insuficiente e levou ao meu mal-entendido sobre como elas funcionam para palavras monitoradas. Mas… alguns pontos:

  • Acredito que eu pensasse que o contexto da regex fosse algo como “string dentro de limites de palavra”. O que mais faria sentido? Certamente não o documento inteiro do tópico? Neste caso, para que “artificial” fosse marcado, eu precisaria especificar art* (ou art.* ou algo assim, como mencionado no título deste tópico).

  • Joshua: obrigado pela sua sugestão do metacaractere de limite de palavra. Acabei de testar e não funcionou. Nem na função Teste nem na prática. Então… atualmente parece não haver nenhuma solução alternativa (ou ‘forma correta’ de obter o comportamento desejado).

  • A função Teste é muito boa. Ela parece se comportar exatamente como eu intuitivamente esperava. art dispara apenas quando a palavra “art” aparece (e não dispara em “artificial”), art* dispara em “artificial”, como esperado. Além disso, art* life dispara tanto em “art life” quanto em “artificial life”. Também pensei que talvez a função Teste não estivesse usando análise de regex se eu inserisse apenas uma palavra, mas não… foo* art dispara em “foobar art”, não dispara em “foobar artificial”. Então… quem escreveu a função Teste estava pensando da mesma forma que eu (acho).

Resumindo,

  • A sugestão de Jeff de um lembrete de que watched_words_regular_expressions está ativado é boa.
  • O comportamento da função Teste deve corresponder ao comportamento real.
    • E, a propósito, minha preferência é que o comportamento real corresponda ao comportamento atual da função Teste.
  • Se alguém precisar de mais conhecimento sobre regex do que o sugerido pela função de teste atual, seria bom ter exemplos em algum lugar.
  • Se houver uma solução alternativa ou ‘forma correta’ (como “use \bart\b para obter o comportamento desejado”), ficarei feliz em usá-la.

Mais uma vez, obrigado a todos pela atenção dada a este problema relativamente menor para uma ótima plataforma!

2 curtidas

Podemos garantir que isso seja atribuído a @zogstrip?

4 curtidas

Adicionei um aviso quando a configuração do site para expressões regulares de palavras monitoradas está habilitada neste PR:

Veja como fica com as expressões regulares desabilitadas e depois habilitadas (observe o aviso e o placeholder de entrada diferente):

4 curtidas

Mas Bianca,

Minha tentativa com ‘\bart\b’ não funcionou para ‘art’ (ou ‘artificial’, como não deveria).

Essa tentativa foi para a marcação automática.

Existe algum motivo pelo qual não poderíamos usar exatamente a função Test existente para analisar os tópicos (para fazer a marcação automática)?

Olá Norman,

Se a configuração do site watched words regular expressions estiver habilitada, você deve usar \bart\b, onde \b representa o limite de palavra. Se a configuração do site estiver desabilitada, você não precisa usá-la, pois os limites de palavra são incluídos automaticamente.

Acabei de testar isso e funciona perfeitamente para mim, incluindo o modal de teste:

Implementei isso e deve funcionar na versão mais recente.

3 curtidas

Oi Bianca,

Muito obrigado por verificar isso.

  1. Fiquei confuso sobre a ativação de expressões regulares de palavras monitoradas. Pensei que isso fosse configurado automaticamente se eu usasse um * curinga na minha especificação de gatilho automático. Percebi que não é esse o caso, então não foi surpresa que minha tentativa com \bart\b tenha falhado.
  2. Vou verificar a ‘versão mais recente’ para obter sua implementação da função de teste. Para mim, Test sempre funcionou, assim como funciona para você.

Obrigado novamente!

2 curtidas