I have a list where some elements are strings or sublists:
list = {"DTLCIGYHANNSTDT", "LCLGHHAVPNGTLVKTITNDQIEVTNATELVQSSSTGKI", \
"CLGHHAVPNGTLVKTITNDQIEVTNATELVQSSSTGKIC", {"H25", " H45", " I361",
" D362"}, "N197", {"H25", " H45", " S46", " V47", " T332", " V361", " D362",
" G363", " W364", " Q381", " K382", " T384", " Q385", " I388",
" N389", " V395", " N396", " I399"}, {"H25", " H45", " V47", " N48",
" L49", " T332", " D362", " G363", " W364", " Q381", " T384",
" Q385", " I388", " N389", " T392", " V395", " N396", " I399",
" E400"}, "NSTDTVDTVLEKNVT", {"D31", " S46"}, "S145", ... }
I want to target the 1st level strings that look like "N197"
or "S145"
and replace them with {N197}
and {S145}
. Transform from String to List, essentially.
I've tried with
list /.
x_String /;
StringMatchQ[x, RegularExpression["^[A-Z]\\d{1,3}$"]] :> List[x]
This command affects the desired elements, PLUS the first string element of every sublist. I know I'm missing something obvious, but how can I keep the changes to the 1st-level of the list?