在正则表达式中修剪空格

时间:2015-08-19 19:07:55

标签: c# regex

我有一个用于解析由等号分隔的键/值对的正则表达式。在' ='之前和之后可能会有一些空白字符,但键和值应该没有它们。例如

key=value
key = value

必须返回相同的结果:' key'和'价值',而不是'关键'和'值'

我在解析值时遇到一些问题,因为它可能是空的并且没问题。

key=

这是我的正则表达式版本,没有修剪值为https://regex101.com/r/pY9rW8/2

的空格

4 个答案:

答案 0 :(得分:3)

您可以考虑没有正则表达式的变体:

string s = "key=value";
var a = s.Split('=');
var key = a[0].Trim();
var val = a[1].Trim();

答案 1 :(得分:1)

只需将值部分中的空格与[\t ]*

匹配即可
^\s*([^#]\S+?)\s*=[\t ]*(.*)

^\s*([^#]\S+?)\s*=[\t ]*(.*?)\s*$

DEMO

答案 2 :(得分:0)

您还可以在键和值上使用命名组,并丢弃空格:

  

^(?<key>.+)\s*=\s*(?<value>.+)$

答案 3 :(得分:0)

你给了这个正则表达式:

  col1                 col2
0    a             a string
1    b   a very long string
2    c       another string

考虑^\s*([^#]\S+?)\s*=(.*) 后,这不会占用空格。为此,请添加另一个=

\s*

此外,您可能希望匹配字符串的结尾,看到您通过^\s*([^#]\S+?)\s*=\s*(.*) 匹配开头,所以最后添加^

$

这是一个实例:

https://regex101.com/r/pY9rW8/6