鉴于bar(alvin the chipmunk dude)
和chipmunk(alvin the chipmunk dude)
,您如何仅在“条形码”功能上匹配单词“chipmunk”?
我刚问过的另一个问题,但没有我想要的复杂性,回答here。考虑到@revo问题的答案,我不认为这是重复的。那个答案确实回答了另一个问题,但我认为无法调整它以确保匹配包含在两个不同的字符串中(“bar(”和“)”)。
chipmunk(?=[^\)\(\\]*(?:\\.[^\)\(\\]*)*\))
(由@revo提供)在括号内匹配“chipmunk”,但我想将其限制在“bar(”和“)”中。
使用使用Java的JetBrains IDE。
答案 0 :(得分:1)
由于您使用的是Java正则表达式库,因此可以使用constrained-width lookbehind功能:
只要匹配字符串的长度落在预定范围内,Java就会接受lookbehind中的量词。例如,
(?<=cats?)
有效,因为它只能匹配三个或四个字符的字符串。同样,(?<=A{1,10})
有效。
您可以使用
(?<=bar\([^()]{0,1000})chipmunk
它匹配紧跟chipmunk
之后的任何bar(
字符串,后跟除(
和)
之外的0到1000个字符。