我有这种正则表达式模式:
[^-]+-(.+)[^\d](.+)-(.*?)-.*(\d+).*-([\w]+-[\w]+-[^-]+)-(\d+-\d+)-(.+)\.
这需要同时满足这两种情况
Data Location 1 - many many words 201808206566 - many words - 010114-INL-USD-B087834-2018-08-Bill.PDF
Data Location 1 - many many words 201808206565 - many words - 010115-INL-B087845-2018-08-Bill.PDF
按原样,这匹配第一种情况,而不匹配第二种情况。通过从第5个捕获组中删除[\w]+-
的一个实例,我得到了相反的结果,这是因为第一种情况包含INL-USD-B087834,其中包含一个附加数据块。如何使第二实例可选?
答案 0 :(得分:0)
使用?
运算符将其放在可选组中。
[^-]+-(.+)[^\d](.+)-(.*?)-.*(\d+).*-(\w+-(?:\w+-)?[^-]+)-(\d+-\d+)-(.+)\.
或者您使用数字量词在其中允许1或2个字块:
[^-]+-(.+)[^\d](.+)-(.*?)-.*(\d+).*-((?:\w+-){1,2}[^-]+)-(\d+-\d+)-(.+)\.