正则表达式匹配不同的模式

时间:2013-09-19 12:48:08

标签: regex

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

示例:101e10 = 1

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

示例:t = 5000

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

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

我已经尝试使用([^=]-[t]*)(=[01])|(^t)(=[0-9]*)([^=]*-[t])(=[01])|(^t)(=[0-9]*)减去模式,但两者都没有做到。此外,我觉得两次尝试都没有正确使用减法功能。

2 个答案:

答案 0 :(得分:1)

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

(?:([0-9][^=]*)(=[01])|(t)(=[0-9]*))

答案 1 :(得分: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]*)