4

我需要一个执行以下操作的正则表达式

  1. 如果起始行中第一个单词的第一个字母为小写,则匹配。
  2. 从包含上述字母的单词开始,替换为空字符串,直到出现以大写开头的单词

这是我尝试过的:

string result = Regex.Replace(input,@"^[a-z]\s?[a-z0-9]\s?[^A-Z]","");

这是应该发生的:

样本输入 =“!jgf 地区。国家财富”

所需输出="国富论"

我应该怎么做才能改进/纠正?

4

3 回答 3

4

你可以像下面这样:

string result = Regex.Replace(input,@"^[^A-Z]*","");
于 2012-10-12T08:04:58.713 回答
1

这种模式就足够了。

^[^A-Z]+

它将替换所有不是大写字母的字符

顺便说一句,在 C# 中没有 RegEx有一种更快的方法。

int index=str.indexOfAny(new char[] { 'A', 'B', ..., 'Z'})
if(index!=-1){
    str = str.Substring(index);
}
于 2012-10-12T08:05:29.693 回答
1
" ([A-Z]+.*)"

使用组,Gruops[1] 是你想要的

于 2012-10-12T08:07:25.863 回答