Tag: lookbehind

为什么在某些风格的外观工作中没有有限的重复?

我想从dd/mm/yy格式的日期解析中间的2位数字,但也允许日期和月份的单个数字。 这就是我提出的: (?<=^[\d]{1,2}\/)[\d]{1,2} 我想要一个带有1或2位数字的1位或2位数字[\d]{1,2}并在它之前斜线^[\d]{1,2}\/ 。 这不适用于许多组合,我已经测试了10/10/10 / 11/12/13等… 但令我惊讶的是(?<=^\d\d\/)[\d]{1,2}有效。 但是[\d]{1,2}也应该匹配,如果\d\d ,或者我错了?

Java正则表达式错误 – 后瞻组没有明显的最大长度

我收到此错误: java.util.regex.PatternSyntaxException: Look-behind group does not have an obvious maximum length near index 22 ([az])(?!.*\1)(?<!\1.+)([az])(?!.*\2)(?<!\2.+)(.)(\3)(.)(\5) ^ 我想要匹配COFFEE ,但不是BOBBEE 。 我正在使用java 1.6。

背后的反向引用

你能在后视镜中使用反向引用吗? 假设我想在我身后的任何地方split一个角色重复两次。 String REGEX1 = “(?<=(.)\\1)"; // DOESN'T WORK! String REGEX2 = "(?<=(?=(.)\\1)..)"; // WORKS! System.out.println(java.util.Arrays.toString( "Bazooka killed the poor aardvark (yummy!)" .split(REGEX2) )); // prints "[Bazoo, ka kill, ed the poo, r aa, rdvark (yumm, y!)]" 使用REGEX2 (其中反向引用嵌套在REGEX1内的前瞻)工作,但REGEX1在运行时给出此错误: Look-behind group does not have an obvious maximum length near index 8 (?<=(.)\1) ^ 我想这是有道理的,因为通常后向引用可以捕获任意长度的字符串(如果正则表达式编译器更聪明一点,它可以确定在这种情况下\1是(.) ,因此具有有限的长度)。 […]