我想用C#为字符串编写一个正则表达式,它可以包含任何运算符和操作数值。这些运算符是字符串字符,如eq表示等于,ct = between & bt表示中间,eq表示等于。
在测试过程中,有人用eq:**+4的垃圾值测试了我的代码,并且字符串是eq:**+4。
现在,我希望构建一个regex,这样它将根据regex值(如eq:5或bt:8-9 )验证字符串。
注意:操作符之间的exlcuding没有其他操作符应该有像eq:4-6这样的值。
我做了这个@"^\b(eq,ne,gt,lt,ge,ge,le,ct,bt)\w\b:?(\d -)?\d“
我看起来很亲密,但需要一些指导才能让这件事正常运作。
欢迎任何帮助或建议。
发布于 2021-10-21 16:11:20
您可以使用
@"^(eq|[gln]e|[bclg]t)\s*:\s*\d+(?:\.\d+)?(?:-\d+(?:\.\d+)?)?\z"见regex演示。详细信息
^ -字符串的开始(eq|[gln]e|[bclg]t)\s*:\s* -一个用零或多个空格括起来的冒号\d+(?:\.\d+)? -整数/浮点数(一个或多个数字,然后是一个可选的点序列和一个或多个数字)(?:-\d+(?:\.\d+)?)? -一个可选的-序列,一个或多个数字,然后是一个可选的点序列和一个或多个数字。\z -字符串的末尾。请参阅锚中的.NET正则表达式。
编辑:
似乎只有bt范围被接受,所以您需要
@"^(?:eq|[gln]e|[clg]t|(bt))\s*:\s*\d+(?:\.\d+)?(?(1)(?:-\d+(?:\.\d+)?)?)\z"发布于 2021-10-21 16:02:34
(eq|ne|gt|lt|ge|le|ct|bt):-?[0-9]+(--?[0-9]+)?
或与命名组:@"(?<operator>eq|ne|gt|lt|ge|le|ct|bt):(?<firstValue>-?[0-9]+)(-(?<secondValue>-?[0-9]+))?$"
无负值:@"(?<operator>eq|ne|gt|lt|ge|le|ct|bt):(?<firstValue>[0-9]+)(-(?<secondValue>[0-9]+))?$"
https://stackoverflow.com/questions/69664934
复制相似问题