[英]Regex for newline "\n\r" and digits
我要匹配\r\n1.1
blabla \r\n1.1 Entrepreneurship und Untern
我尝试了以下正则表达式:
"\r\n"\d\.\d\s+
它应该是什么样子?
它应该是什么样子?
如果,当你在你的帖子中说bla \r\n1.1
时,你的意思是这个字符串有一个回车符和一个换行符,总共有 9 个字符,那么你可以:
Regex.Match("blabla \r\n1.1 Entrepreneurship und Untern", "\r\n\\d\\.\\d\\s+");
(你不需要\\r\\n
因为正则表达式引擎可以接收 CR LF 作为编译器解释 \r 和 \n 的实际字符,但编译器不会感谢你把 \d 和\s 在非逐字字符串中,因为这些不是编译器可以处理的已知转义序列)
Regex.Match("blabla \r\n1.1 Entrepreneurship und Untern", @"\r\n\d\.\d\s+");
在第二种形式中,接收\r
并将其解释为“回车”的是正则表达式引擎,而不是编译器。 使用 @ 会关闭编译器将它看到的任何\r
转换为回车符(char 13)的过程。 这意味着看到\r
并将其解释为“用户正在寻找回车符”的是正则表达式引擎
如果,当你在你的帖子中说bla \r\n1.1
时,你的意思是这个字符串实际上有一个斜杠和一个 r,以及一个斜杠和一个 n,总共 11 个字符,那么你可以:
Regex.Match(@"blabla \r\n1.1 Entrepreneurship und Untern", "\\\\r\\\\n\\d\\.\\d\\s+");
您需要输入\\\\r
因为编译器会将其转换为\\r
,然后正则表达式引擎会将其转换为\r
,即“字面斜线后跟字面 r”。
如果你只是做了\\\r
,编译器会很高兴并变成“反斜杠后跟回车”,那么正则表达式引擎将寻找“反斜杠后跟回车”而不是“反斜杠后跟 r”
如果您只是执行\\r
,编译器会将其转换为“反斜杠后跟 r”,但是当您“查找斜杠然后 r”时,正则表达式引擎会将其解释为“寻找回车符”
Regex.Match("blabla \r\n1.1 Entrepreneurship und Untern", @"\\r\\n\d\.\d\s");
出于同样的原因:使用 @ 字符串会停止编译器将\\
转换为\
和\r
转换为(回车符),但是当正则表达式引擎进行解释时,您仍然可以执行类似的转换。 您需要确保正则表达式引擎在解释之前看到\\r
。 如果它看到\r
或(回车),它将在您寻找“斜线然后 r”时寻找回车
最后脚注:当您开发 C# 正则表达式时,regexstorm.net 使用 .NET 正则表达式引擎,并且通常是比基于非.net 正则表达式引擎的站点更好的测试站点
为了匹配
\r\n1
\r\n2.1
\r\n13.1.2
您应该转义\
和.
字符,因为它们是保留字符正则表达式。 要转义它们,请在它们之前添加一个\
字符,因此您的正则表达式应类似于:
\\r\\n(\d+\.?)+
当将该正则表达式用于 c# 字符串文字时,您需要在字符串的开头添加一个@
字符以避免编译器解释\
字符( \
字符不仅在正则表达式引擎中保留,而且在 c# 字符串中保留)。
string myRegexExpression = @"\\r\\n(\d+\.?)+";
\\r\\n
匹配\r\n
因为我们转义了\
字符\d+
匹配一个或多个数字\.?
用于匹配可选的.
特点(\d+\.?)+
用于匹配重复的1.
序列,类似于1
, 1.1
, 1.1.1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.