我需要匹配以下字符串:
" 4/abc def"
这
" 4/abc def 5/abc"
或
" 4/abc def"
到目前为止,我设法建立了这个正则表达式:
(?<MyGroup> 4\/(.+)(?=(?: \d\/)))
我试图让前瞻可选?
或添加|$
,但它会抓住所有内容。我可以以某种方式使5/abc
可选吗?
我已尝试过这些表达方式,但它们并不适用于这两种情况:
(?<MyGroup> 4\/(.+)(?=(?: \d\/)?))
(?<MyGroup> 4\/(.+)(?=(?: \d\/|$)))
编辑:
我被迫使用这段时间,因为任何角色都可以。它是一个自由文本字段。
答案 0 :(得分:1)
通过添加.+
使?
懒惰,并将替换添加到$
(?<MyGroup> 4\/(.+?)(?=(?: \d\/)|$))
(.+?)
延迟匹配会导致正则表达式引擎在看到第一个\d/
后停止,而不是继续到字符串的结尾。