[英]How do I capitalize an entire text except for certain patterns?
除以下内容外,我都有一个大写的文本(字符串):
其他所有内容均应替换为大写形式,并保留格式(空格,换行符等)。
我将如何使用Regex(C#样式/语法)进行此操作?
我认为您正在寻找这样的东西:
text = Regex.Replace(text, @":\w+|""[^""]*""|'[^']*'|(.)",
match => match.Groups[1].Success ?
match.Groups[1].Value.ToUpper() : match.Value);
:\\w+
-用冒号匹配单词。 "[^"]*"|'[^']*'
-匹配引用的文本。对于转义的引号,可以使用:
"[^"\\\\]*(?:\\\\.[^"\\\\]*)*"|'[^'\\\\]*(?:\\\\.[^'\\\\]*)*'
(.)
-捕获其他任何内容(您也可以尝试([^"':]*|.)
,它可能会更快)。
接下来,我们对Regex.Replace使用一个回调来做两件事:
工作示例: http : //ideone.com/ORFU8
您可以从此RegEx开始:
\b(?<![:"'])(\w+?)(?!["'])\b
但是,当然,如果还不够的话,您必须自己进行改进。 例如,这也将找不到“ dfgdfg”(引号不等)。找到的单词在第一个匹配项($ 1)中
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.