我需要识别在字符串中找到的子字符串,例如:
“ CityABCProcess测试”或“ cityABCProcess测试”
产生:[“城市/城市”,“ ABC”,“过程”,“测试”]
可以由正则表达式处理吗?还是应该将字符串转换为字符数组,并使用一些索引逻辑手动检查这些情况。Lambda解决方案在这里可以工作吗?最好的方法是什么?
不用注意反对者!即使这样,RegEx也不是那么复杂。我相信这种模式应该可以解决问题:
[AZ] [az] + | [AZ] + \ b | [AZ] +(?= [AZ])| [az] +
请参见此处获取有效的演示。它只是OR
按顺序处理的一堆。细目如下:
[A-Z][a-z]+
-任何以大写字母开头,然后是所有小写字母的单词[A-Z]+\b
-所有大写字母的单词(以便包括最后一个大写字母,该字母将在以下选项中排除)[A-Z]+(?=[A-Z])
-所有大写字母的单词,但不包括下一个单词的第一个大写字母[a-z]+
-所有大写的单词例如:
string input = "CityABCProcess TEST";
StringBuilder builder = new StringBuilder();
builder.Append("[A-Z][a-z]+");
builder.Append("|");
builder.Append("[A-Z]+$");
builder.Append("|");
builder.Append("[A-Z]+(?=[A-Z])");
builder.Append("|");
builder.Append("[a-z]+");
foreach (Match m in Regex.Matches(input, builder.ToString()))
{
Console.WriteLine(m.Value);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句