C# 调整正则表达式中的空白
我有一个正则表达式,用于解析由等号分隔的键/值对。“=”前后可能有一些空格字符,但键和值应该没有空格字符。比如说C# 调整正则表达式中的空白,c#,regex,C#,Regex,我有一个正则表达式,用于解析由等号分隔的键/值对。“=”前后可能有一些空格字符,但键和值应该没有空格字符。比如说 key=value key = value 必须返回相同的结果:“键”和“值”,而不是“键”和“值” 我在解析这个值时遇到了一个小问题,因为它可以是空的,并且没有问题 key= 这是我的regex版本,不需要修剪值的空格只需将值部分的空格与[\t]* ^\s*([^#]\S+?)\s*=[\t ]*(.*) 或 只需将值部分中的空格与[\t]* ^\s*([^#]\S+?)\s
key=value
key = value
必须返回相同的结果:“键”和“值”,而不是“键”和“值”
我在解析这个值时遇到了一个小问题,因为它可以是空的,并且没有问题
key=
这是我的regex版本,不需要修剪值的空格只需将值部分的空格与
[\t]*
^\s*([^#]\S+?)\s*=[\t ]*(.*)
或
只需将值部分中的空格与
[\t]*
^\s*([^#]\S+?)\s*=[\t ]*(.*)
或
可以考虑一个没有正则表达式的变体:
string s = "key=value";
var a = s.Split('=');
var key = a[0].Trim();
var val = a[1].Trim();
可以考虑一个没有正则表达式的变体:
string s = "key=value";
var a = s.Split('=');
var key = a[0].Trim();
var val = a[1].Trim();
也可以在密钥和值上使用命名组,并丢弃空白空间:
也可以在密钥和值上使用命名组,并丢弃空白空间: 你给了这个正则表达式:
^\s*([^#]\S+?)\s*=(.*)
这不考虑=
后面的空格。为此,请添加另一个\s*
:
^\s*([^#]\S+?)\s*=\s*(.*)
另外,假设您希望匹配字符串的结尾,因为您通过^
匹配开头,所以在末尾添加一个$
:
^\s*([^#]\S+?)\s*=\s*(.*)$
下面是一个活生生的例子:
您给了这个正则表达式:
^\s*([^#]\S+?)\s*=(.*)
这不考虑=
后面的空格。为此,请添加另一个\s*
:
^\s*([^#]\S+?)\s*=\s*(.*)
另外,假设您希望匹配字符串的结尾,因为您通过^
匹配开头,所以在末尾添加一个$
:
^\s*([^#]\S+?)\s*=\s*(.*)$
下面是一个活生生的例子:
这个?为什么不直接使用
string.Trim()
?我很懒。字符串。替换(“=”,“=”);:这?你为什么不直接使用string.Trim()
?我很懒。字符串。替换(“=”,“=”);:当然,如果没有值,则需要进行额外检查。但是,固溶体。很好的解决方案,但目标是使用正则表达式来实现。当然,如果没有值,则需要进行额外的检查。但是,固溶体。很好的解决方案,但目标是使用regex使其在值为空时您的示例无法正常工作。它将下一个字符串视为值当值为空时,您的示例无法正常工作。它将下一个字符串视为一个值。它不适用于空值,但无论如何谢谢。它不适用于空值,但无论如何谢谢。