如何完全忽略RegEx中的换行符和制表符?

时间:2011-01-11 03:48:16

标签: c# asp.net regex

有没有办法在RegEx中完全忽略换行符和制表符等?   例如,换行符和制表符可以在内容字符串中的任何位置找到。

... [CustomToken \t \r\n Type="User" \t \r\n Property="FirstName" \n /] ... [CT ...

我正在使用的是RegularExpression:

(\[CustomToken).*?(\/\])

.NET API

Regex.Matches(string input, string pattern)

感谢您的建议。

4 个答案:

答案 0 :(得分:19)

如果您只想让该正则表达式匹配该输入,您只需指定单行模式:

Regex.Matches(input, @"\[CustomToken).*?(/\])", RegexOptions.Singleline);

点元字符通常匹配除换行符(\n)之外的任何字符。单线模式,也称为“点匹配全部”或“DOTALL”模式,也允许它匹配换行符。

答案 1 :(得分:3)

没有办法用正则表达式“忽略”任何类型的字符。你可以忽略字母大小写,但这就是它。

你最好的选择是使用\s+,你会期望某种类型的空白。 \s类将匹配任何空格,包括换行符,回车符,制表符和空格,这将使您的正则表达式模式看起来更好。

答案 2 :(得分:1)

你需要标签/换行符吗?您可以随时将tab /换行符替换为空字符以将其删除。

string mystring = "\t\nhi\t\n";

string mystring_notabs = mystring.Replace("\t",""); //remove tabs

mystring = mystring_notabs.Replace("\n",""); //remove newline and copy back to original

答案 3 :(得分:0)

我遇到了多行XML值的问题。我想要描述字段中的数据,并且我不想更改我的C#代码以使用单行选项,因为我动态地从数据库中读取正则表达式以进行解析。这解决了我的问题,特别是前面的(?s):

 (?s)(?<=<description>).*(?=<\/description>)