在正则表达式中修剪空白

本文关键字:空白 修剪 正则表达式 | 更新日期: 2023-09-27 18:08:51

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

key=value
key = value

必须返回相同的结果:'key'和'value',而不是'key'和'value'。

我有一个小问题解析值,因为它可以是空的,它是好的。

key=

这是我的regex版本,不修剪值https://regex101.com/r/pY9rW8/2

在正则表达式中修剪空白

的空白

您可以考虑不使用正则表达式的变体:

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

只需将值部分的空格与['t ]*匹配

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

^'s*([^#]'S+?)'s*=['t ]*(.*?)'s*$
演示

您也可以在键和值上使用命名组,并扔掉空白:

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

你给了这个正则表达式:

^'s*([^#]'S+?)'s*=(.*)

这不考虑=之后的空白。为此,添加另一个's*:

^'s*([^#]'S+?)'s*='s*(.*)

另外,假定您想要匹配字符串的末尾,因为您正在通过^匹配开头,因此在末尾添加$:

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

下面是一个实例:

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