[英]Regex that matches a newline (\n) in C#
好的,這讓我發瘋了...。
var newContent = string.Format("({0})\n{1}", stripped_content, reply)
newContent將顯示為:
(舊文本)
新文字
我需要一個正則表達式,以去除括號之間的文本(包括括號和換行符)。
我能想到的最好的是:
const string regex = @"^(\(.*\)\s)?(?<capture>.*)";
var match= Regex.Match(original_content, regex);
var stripped_content = match.Groups["capture"].Value;
這行得通,但是我想專門匹配換行符( \\n
),而不是任何空格( \\s
)用\\n
\\\\n
或\\\\\\n
替換\\s
不起作用。
請幫助我保持理智!
編輯:一個例子:
public string Reply(string old,string neww)
{
const string regex = @"^(\(.*\)\s)?(?<capture>.*)";
var match= Regex.Match(old, regex);
var stripped_content = match.Groups["capture"].Value;
var result= string.Format("({0})\n{1}", stripped_content, neww);
return result;
}
Reply("(messageOne)\nmessageTwo","messageThree") returns :
(messageTwo)
messageThree
如果指定RegexOptions.Multiline,則可以使用^
和$
分別匹配行的開頭和結尾。
如果您不想使用此選項,請記住,換行可能是以下任意一項: \\n
, \\r
, \\r\\n
,因此,與其僅查找\\n
,不如使用: [\\n\\r]+
或更確切地說: (\\n|\\r|\\r\\n)
。
實際上它可以工作,但選項相反
RegexOptions.Singleline
您可能在\\ n之前有一個\\ r。 嘗試用(\\ r \\ n)替換\\ s。
如果您嘗試匹配行尾,那么您可能會發現
Regex.Match("string", "regex", RegexOptions.Multiline)
幫助
想想我參加聚會可能有點晚了,但仍然希望這會有所幫助。
我需要在兩個哈希符號之間獲取多個令牌。
示例i / p:
##令牌1 ##
## token2 ##
## token3_a
token3_b
token3_c ##
在我看來,這似乎可行:
var matches = Regex.Matches (mytext, "##(.*?)##", RegexOptions.Singleline);
當然,您可能想用自己的字符替換兩端的雙哈希符號。
HTH。
由於違反直覺,因此可以同時使用“ Multiline
和“ Singleline
選項。
Regex.Match(input, @"(.+)^(.*)", RegexOptions.Multiline | RegexOptions.Singleline)
第一個捕獲組將包含第一行(包括\\r
和\\n
),第二個捕獲組將具有第二行。
Multiline
:
^
和$
匹配每行的開頭和結尾(而不是輸入字符串的開頭和結尾)。
Singleline
:
句點(
.
)匹配每個字符(而不是\\n
以外的每個字符)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.