有没有办法在RegEx中完全忽略换行符和制表符等? 例如,换行符和制表符可以在内容字符串中的任何位置找到。
... [CustomToken \t \r\n Type="User" \t \r\n Property="FirstName" \n /] ... [CT ...
我正在使用的是RegularExpression:
(\[CustomToken).*?(\/\])
.NET API
Regex.Matches(string input, string pattern)
感谢您的建议。
答案 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>)