在转换器中使用Regex

本文关键字:Regex 转换器 | 更新日期: 2023-09-27 18:13:00

我有一个Converter,我想在那里使用Regex来拆分我的ConverterParameters。以下可能是这种情况,它以为主导

<
<=
>
>=
==
!=

然后是一个数字,例如

10.4565

现在我想在运算符和数字上将其拆分为两个匹配项。我该怎么做?我试过这个:

((==)|(!=)|(>)|(<)|(>=)|(<=) )|((?<=[><(==)(!=)(>=)(<=)])[0-9.]+)

在转换器中使用Regex

您可以使用以下正则表达式:

([<>]|[<>=!]=)'s*([0-9.]+)

你的有几个问题:((==)|(!=)|(>)|(<)|(>=)|(<=) )|((?<=[><(==)(!=)(>=)(<=)])[0-9.]+)

  • [><(==)(!=)(>=)(<=)]是一个char类,它等价于[(!><=)]
  • 后面的人没用

Regex r = new Regex(@"([<>]|[<>=!]=)'s*([0-9.]+)");
string s = @"<= 10.4568";
var matches = r.Matches(s);
foreach(Match match in matches)
{
    Console.WriteLine($"Operator {match.Groups[1]}, number: {match.Groups[2]}");
}

将输出:

运算符<=,编号:10.4568

这可能是最简单的:

(==|!=|>|<|>=|<=)'s*([0-9'.-]+)

它匹配像"(运算符((数字("这样的字符串。

好的,这是我到目前为止提出的

^(<=|>=|!=|==|>|<)(-?'d*'.?'d*$)测试

!=-12322.645642
==12322
>=12
>=0.1

这是无效的:==0..21

这也是无效的

>--0.01

如果您还想在运算符和数字之间允许空白,您可以这样做:^(<=|>=|!=|==|>|<)('s?-?'d*'.?'d*$)