0

目前我们正在使用正则表达式匹配用户输入([^=]*)(=[01])。用户键入信号名称(nnnnn,其中 n 是数字,a 是字母数字字符)及其值,即 0 或 1。

示例:101e10=1

现在我们必须扩展解析器以匹配模式 t=N,其中 N 表示一个数字。

示例:t=5000

我尝试使用 扩展正则表达式以匹配这两种情况([^=]*)(=[01])|(^t)(=[0-9]*),但使用此表达式的第一部分已经与模式 t=N 匹配。

如何排除要与表达式的第一部分匹配的模式t[^=]*

我已经尝试使用([^=]-[t]*)(=[01])|(^t)(=[0-9]*)or减去模式([^=]*-[t])(=[01])|(^t)(=[0-9]*),但两者都不起作用。此外,我觉得这两次尝试都不是减法功能的正确使用。

4

2 回答 2

1

我认为你需要这样的东西:

(?:([0-9][^=]*)(=[01])|(t)(=[0-9]*))
于 2013-09-19T12:51:02.400 回答
1

您也许可以修改第一个正则表达式,以便对其验证更加严格。

([01]{3}[a-z][01]{2})(=[01])

然后结合你的第二个正则表达式:

([01]{3}[a-z][01]{2})(=[01])|(^t)(=[0-9]*)

或者因为您知道第一种格式以 0 或 1 开头,您可以这样做:

(^[01][^=]*)(=[01])|(^t)(=[0-9]*)
于 2013-09-19T12:52:43.887 回答