C# 用于查找和替换不在标记中的文本的正则表达式

C# 用于查找和替换不在标记中的文本的正则表达式,c#,regex,text,C#,Regex,Text,我正在寻找并替换不在标记内的文本 标记很简单,并遵循以下模式: (<[A-Z_]+>)([^<]+)(</[A-Z_]+>) ()([^您的解决方案是: Regex.Replace(s, @"((?<!^)\b[A-Z])(?=[^<>]+<[^\/>][^>]+>)", m => m.Value.ToLower()); Regex.Replace(s,@“((?]+][^>]+>)”,m=>m.Value.ToL

我正在寻找并替换不在标记内的文本

标记很简单,并遵循以下模式:

(<[A-Z_]+>)([^<]+)(</[A-Z_]+>)
()([^您的解决方案是:

Regex.Replace(s, @"((?<!^)\b[A-Z])(?=[^<>]+<[^\/>][^>]+>)", m => m.Value.ToLower());
Regex.Replace(s,@“((?]+][^>]+>)”,m=>m.Value.ToLower());
检查。试试这个正则表达式:

((?<!^|\.\s*)\b[A-Z])(?![^<>]+(?:<\/[^>]+)?>)
((?]+(?:]+)?>)
在这里测试一下

这将确保与同一行中新句子的第一个大写单词不匹配。
例如,
电影中的
不是很好
不会匹配

如果程序员不看电影,他会看什么电影 办公室?电影没那么好


我讲得有点快…这将把“I”改成小写。虽然已经晚了,所以我明天会再看。--不过,感谢您有一个好的开始。@RyansMystry-要排除单字母单词(如
I
),请使用此演示中的语法:
What movie did The programmer watch if he didn't watch <NAME>Dawn of the Dead - The Original Director's Cut</NAME>?
Why Don't You watch <NAME>This is Spinal Tap</NAME> on <DAY>Friday</DAY> or whenever?
Why don't you watch <NAME>This is Spinal Tap</NAME> on <DAY>Friday</DAY> or whenever?
Regex.Replace(s, @"((?<!^)\b[A-Z])(?=[^<>]+<[^\/>][^>]+>)", m => m.Value.ToLower());
((?<!^|\.\s*)\b[A-Z])(?![^<>]+(?:<\/[^>]+)?>)