我需要RegExp表达式,它在句子中选择每个字母一次(不区分大小写)。 你能救我吗?
输入字符串是:
AaAaaAaaabbacdaasccasddasdascasdasZz
结果必须(以任何顺序):
abcdsz
UPD:好的,我明白了。没有RegExp解决方案。以编程方式解决方案(QT)
答案 0 :(得分:2)
有可能,有两个警告,每个字母都在单独的匹配中,并且无法保证字符的大小写(字符的最后一个外观,无论是大写还是小写,都将被选中)。
(.)(?!.*\1)
QRegExp
implements backreference, and look-ahead,所以上面的正则表达式应该可行。
它应与Qt::CaseInsensitive
选项一起使用。
.
匹配任何字符,无异常(这相当于Perl,PCRE,Java等中的s
选项),因此根据您的要求,你可能想先删掉字符串中的所有空格字符..
Demo at regex101(它使用PCRE引擎,但此正则表达式的行为应该没有区别)
答案 1 :(得分:1)
以编程方式解决方案在这里:
QString s = "AaAaaAaaabbacdaasccasddasdascasdasZz";
QString variables = "";
for(int i=0;i<s.length(); ++i)
{
if(s[i].isLetter() && !variables.contains(s[i]))
variables+=s[i];
}
// variables = "abcdsz"