查找字符串c#中的所有子字符串(正则表达式,Char数组?)
本文关键字:字符串 正则表达式 Char 数组 查找 | 更新日期: 2023-09-27 18:03:20
我需要识别在字符串中找到的子字符串,例如:
"CityABCProcess Test"或"CityABCProcess Test"
屈服:["城市/","ABC","过程","测试")
- 子字符串中的第一个字符串可以是小写或大写
- 在找到小写字母或空格之前,任何包含重复大写字母的子字符串都将是子字符串"ABCProcess -> ABC, ABCProcess -> ABC"
- 如果有一个大写字母后面跟着一个小写字母,子字符串将是所有内容,直到下一个大写字母。
可以由正则表达式处理吗?或者我应该将字符串转换为字符数组,并使用一些索引逻辑手动检查这些情况。解在这里会起作用吗?做这件事最好的办法是什么?
不要理会那些唱反调的人!即使像这样的事情用RegEx也不是那么复杂。我相信这个模式应该可以做到:
[a - z] [a - z] + | [a - z] + ' b | [a - z] + (? = [a - z]) | [a - z] +
查看这里的工作演示。它只是一堆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);
}