我将此(.*)([USB][\s])*作为正则表达式的一部分。当我尝试将其与ABHISHEK USB匹配时,它与第一部分匹配,但全值匹配。有什么方法可以忽略USB(.*)部分并将其与([USB][\s])匹配。

最佳答案

星号(*)说重复零次或多次。这是贪婪地完成的。因此,问题在于.*将尝试匹配所有内容,并且由于第二颗星可以匹配零个字符,因此不会执行回溯。两种解决方案:


如果确定存在(\sUSB)*部分,请使用+而不是*重复一次或多次:

(.*)(\sUSB)+

如果不是这种情况,请对第一颗星-.*?使用非贪婪重复:

(.*?)(\sUSB)*

10-04 22:44