Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 调整正则表达式中的空白_C#_Regex - Fatal编程技术网

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使其在值为空时您的示例无法正常工作。它将下一个字符串视为值当值为空时,您的示例无法正常工作。它将下一个字符串视为一个值。它不适用于空值,但无论如何谢谢。它不适用于空值,但无论如何谢谢。