[英]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.