在转换器中使用Regex
本文关键字:Regex 转换器 | 更新日期: 2023-09-27 18:13:00
我有一个Converter,我想在那里使用Regex来拆分我的ConverterParameters。以下可能是这种情况,它以为主导
<
<=
>
>=
==
!=
然后是一个数字,例如
10.4565
现在我想在运算符和数字上将其拆分为两个匹配项。我该怎么做?我试过这个:
((==)|(!=)|(>)|(<)|(>=)|(<=) )|((?<=[><(==)(!=)(>=)(<=)])[0-9.]+)
您可以使用以下正则表达式:
([<>]|[<>=!]=)'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*$)