正则表达式匹配模式“Double-Double”

本文关键字:Double-Double 模式 正则表达式 | 更新日期: 2023-09-27 18:10:12

我很难找到匹配此模式的正则表达式:

  • 数字(小数分隔符可以是.,),后面跟着
  • - -,后面接
  • 一个数字(小数分隔符可以是.,),后面跟着
  • 半列或空格字符

此模式可重复一次或多次。

下面的例子应该匹配正则表达式:

1-2;
1-2;3-4;5-6;
1,0-2;
1.0-2;
1,0-2.0;
1-2 3-4;
1-2 3,00-4;5.0-6;

下面的例子不应该匹配正则表达式:

1-2
1 2;
1_2;
1-2;3-4

正则表达式匹配模式“Double-Double”

Edit基于1 2;移动到非匹配而更新。


这个应该可以工作:

@"^('d+([,.]'d+)?-'d+([,.]'d+)?[ ;])+(?<=;)$"

解释
^              //Start of the string.
(              //Start of group to be repeated. You can also use (?=
'd+            //One or more digits.
([,.]'d+)?     //With an optional decimal
-              //Separated by a dash
'd+([,.]'d+)?  //Same as before.
[ ;]           //Terminated by a semi-colon or a space
)+             //One or more of these groups.
(?<=;)         //The last char before the end needs to be a semi-colon
$              //End of string.

试试这个:

@"^(['d.,]+-['d.,]+[ ;])*['d.,]+-['d.,]+;$"

注意['d.,]+接受一些通常不被认为是有效的"数字"值的字符序列,如00..,.,。您可能希望找到一个更好的正则表达式来匹配数值,并将其替换为正则表达式。