正则表达式 - 在角色之前匹配模式

时间:2009-06-29 21:32:15

标签: c# regex

我目前正在用c#构建一个玩具汇编程序(通过The Elements Of Computing Systems书)。

我需要匹配一个非常简单的模式,我认为这是学习一些正则表达式的好时机,但我正在努力!

在以下示例中,我只想匹配'='

之前的字母

M = A

d = M

MD = A

A = d

AD = M

AMD = A

我想出了以下内容:

([A-Z]{1,3})=

然而,这也与我不想要的'='匹配。

我也尝试过:

([A-Z^\=]{1,3})=

但我仍然有同样的问题 - 它也匹配'='符号。

我正在使用this site来测试我的正则表达式。

任何帮助都会非常感激。 提前谢谢。

5 个答案:

答案 0 :(得分:30)

您需要positive lookahead assertion

([A-Z]{1,3})(?==)

答案 1 :(得分:30)

你想要的是零宽度,超前断言。你这样做:

(Match this and capture)(?=before this)

在您的情况下,这将是:

([A-Z^]{1,3})(?==)

答案 2 :(得分:4)

以下内容将对“=”之前的所有内容以及之后的所有内容进行分组。

([^=]*)=([^=]*)

它的内容如下:

匹配任何数量不是“=”的字符,后跟“=”,然后匹配任何数量不是“=”的字符。

答案 3 :(得分:0)

你也可以在(?:...)

中将等号放入非捕获区域
([ADM]{1,3})(?:=)

自从我完成本书的这一章以来已经有点了,但我认为既然你需要表达式的两个部分,我对=进行了分割,得到了myArray [0] == M,myArray [1] == A

答案 4 :(得分:-2)

我需要在'='之前匹配每个字符,所以我想出了这个

.*(?==)=

匹配'='之前的每个字符,但不匹配“=”