积极的lookbehind不能按预期工作

时间:2015-07-30 10:27:06

标签: .net regex

使用 .ne t正则表达式匹配字符串时遇到一些问题。 例如,我有以下字符串:

  

II Kop 15/1544

我希望匹配 / 字符后面的第二个数字。 另外,我只想在前面的数字后跟斜线时匹配该数字。此数字也必须只有2或4位数。

我想出了类似的东西:

  

(\ B [0-9] {2} \ C | \ B [0-9] {4} \ b)中

它匹配2位或4位数字,因为它匹配15和1544。 现在我正在尝试积极的观察:

  

(\ B [0-9] {2} \ C | \ B [0-9] {4} \ b)中(小于?=(\ B [0-9] {0,10} \ b )\ S *(/)\ S *)

不匹配。我究竟做错了什么?请帮忙。

1 个答案:

答案 0 :(得分:2)

在捕获组之前放置外观更简单。

(?<=[0-9] / )([0-9]{4}|[0-9]{2})

.NET中允许使用可变长度的后视,因此您也可以将正则表达式编写为:

(?<=[0-9]\s*/\s*)([0-9]{4}|[0-9]{2})