The following regexp code gives the result
\documentclass[11pt]{book} % use larger type; default would be 10pt
\usepackage{pgffor}
\usepackage{l3regex,xparse}
\usepackage{etextools}
\begin{document}
\ExplSyntaxOn
\seq_new:N \l_uiy_result_seq
\NewDocumentCommand {\UiySplit } { m }
{
%\regex_extract_all:nnN { \D+ | \d+(?:\.\d*)? } {#1} \l_uiy_result_seq
\regex_extract_all:nnN {(f)(\d+(?:\.\d*)?)(s)(\d+(?:\.\d*)?)} {#1} \l_uiy_result_seq
\seq_map_inline:Nn \l_uiy_result_seq { item:~##1\par }
}
\ExplSyntaxOff
\UiySplit{f234s222}
\end{document}
gives the following output
item: f234s222
item: f
item: 234
item: s
item: 222
Why is it capturing the whole string and outputting it?
Similarly:
\regex_extract_all:nnN {(f|s)(\d+(?:\.\d*)?){1,2}} {#1} \l_uiy_result_seq
is outputing
item: f234
item: f
item: 234
item: s222
item: s
item: 222
the first and fourth shouldn't be there? (well, I don't want them captured)
