Estou ansioso para lançar a aula de Expressões Regulares (ou Regex, para encurtar).
Para acessar a caixa de notas de um item no database, basta usar: $data_items[n].note.
Primeiramente vou criar uma tag no campo de notas do primeiro item. Eu gosto de separar as tags entre <>, pois fica fácil de saber onde começa e termina a tag. Mas pode fazer da maneira que preferir.
Veja como eu acesso o conteúdo daquela tag num chamar script:
Agora permita-me explicar.
Na primeira linha, estamos checando se a string que obtivemos na caixa de notas combina com a expressão regular que passamos, usando o operador especial: =~ (match).
A expressão regular:
/category:\s+?(.*)>/ipode ser traduzida da seguinte forma.
\s = qualquer espaço.
\s+ = um ou qualquer espaço a mais.
\s+? um ou qualquer espaço a mais, porém não necessário.
() = pegar todo o resto junto.
. = qualquer caractere, qualquer caractere mesmo.
.* zero ou mais de qualquer caractere.O i no final da expressão é uma opção especial, que indica que o conteúdo da expressão não precisa ser
case-sensitive. Ela pode estar tanto maiúscula quanto minúscula.
Caso a string combinar com nossa expressão, o resultado será salvo em umas variáveis globais criadas pelo sistema, que no caso são: $1, $2, $3... $13 e por aí vai.
Essas variáveis globais indicam as combinações, caso haja mais de uma combinação, você pode acessar a segunda usando $2 (por isso não é bom usar variáveis globais comumente).
Vale lembrar que essas variáveis globais irão mudar sempre que você testar outras combinações.
Para mais informações sobre expressões regulares, você pode acessar o
Rubular.
O Rubular foi criado em ruby, mas vale lembrar que as expressões regulares são as mesmas na maioria das linguagens.
Obs: Todo o resultado será retornado como uma string, então se você quiser um número inteiro, converta usando to_i.
Edit: Notei um problema na expressão usada no exemplo. O certo de \s+? seria \s?*.