我目前正在用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来测试我的正则表达式。
任何帮助都会非常感激。 提前谢谢。
答案 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)
我需要在'='之前匹配每个字符,所以我想出了这个
.*(?==)=
匹配'='之前的每个字符,但不匹配“=”