如何在某事物或行尾之前匹配一个字符串?

时间:2015-06-12 10:21:00

标签: regex pcre

我需要匹配以下字符串:

" 4/abc def"

" 4/abc def 5/abc"

" 4/abc def"

到目前为止,我设法建立了这个正则表达式:

(?<MyGroup> 4\/(.+)(?=(?: \d\/)))

我试图让前瞻可选?或添加|$,但它会抓住所有内容。我可以以某种方式使5/abc可选吗?

我已尝试过这些表达方式,但它们并不适用于这两种情况:

(?<MyGroup> 4\/(.+)(?=(?: \d\/)?))
(?<MyGroup> 4\/(.+)(?=(?: \d\/|$)))

SAMPLE

编辑:

我被迫使用这段时间,因为任何角色都可以。它是一个自由文本字段。

1 个答案:

答案 0 :(得分:1)

通过添加.+使?懒惰,并将替换添加到$

(?<MyGroup> 4\/(.+?)(?=(?: \d\/)|$))
  • (.+?)延迟匹配会导致正则表达式引擎在看到第一个\d/后停止,而不是继续到字符串的结尾。

Regex Demo