Classes de caracteres: construa o meu próprio

4

Eu quero construir minha própria classe de caractere em um script, depois modificá-la (e usá-la), por exemplo:

  1. [:myclass:] contém a , * , \n (como alimentação de linha) e [WHITESPACE] .
  2. Quero adicionar todos os caracteres a [:myclass:] de [:alnum:] .
  3. Desejo remover o caractere p e toda a classe [:upper:] de [:myclass:]

A solução preferida não depende de linguagens de script. Se você quiser, use bash .

Pergunta bônus: como armazenar esse sistema em todo o mundo? Sempre que eu inicializo, [:myclass:] tem que estar disponível.

    
por vakufo 11.03.2012 / 22:26

1 resposta

3

Eu tenho medo que a lista de classes de caracteres esteja codificada na biblioteca C (por exemplo, no GNU libc, na função build_charclass em posix/regcomp.c ). A única maneira de estendê-lo seria recompilar a biblioteca C.

Você pode personalizar o conteúdo de cada classe existente em uma definição de localidade.

Na maioria dos casos, deve ser bom o suficiente para construir seu regexp como uma string:

myclass='a*[:alnum:][:space:]'
regexp="[$myclass]"

Você não pode subtrair caracteres de uma categoria dessa maneira. E tenha cuidado ao adicionar ] ou - ou \ para respeitar a sintaxe das classes de caracteres nas expressões regulares do seu idioma.

    
por 12.03.2012 / 02:35