如何使正则表达式匹配的一部分可选?

这是一个示例字符串:


123456#p654321

目前,我正在使用此匹配项进行捕获123456并654321分为两个不同的组:


([0-9].*)#p([0-9].*)

但是有时候,#p654321字符串的一部分不会出现,所以我只想捕获第一组。我试图通过添加第二组使其成为“可选” ?,这是可行的,但前提是#p其余字符串的末尾有一个。


解决这个问题的最佳方法是什么?


明月笑刀无情
浏览 1497回答 2
2回答

缥缈止盈

您的regex实际上不会匹配任何数字,因为您已使用*而不是+。这是您想要的(我认为):(\d+)(?:#p(\d+))?
打开App,查看更多内容
随时随地看视频慕课网APP