小编Cra*_*tch的帖子

Java正则表达式交替运算符"|" 行为似乎破裂了

试图为罗马数字编写正则表达式匹配器.在sed中(我认为它被认为是正则表达式的"标准"),如果你有多个由交替运算符分隔的选项,它将匹配最长的.即,"I|II|III|IV"将"IV"与"IV"匹配,将"III"与"III"匹配

在Java中,相同的模式匹配"I"代表"IV"而"I"代表"III".从左到右,交替匹配之间的Java选择; 也就是说,因为"I"出现在正则表达式中的"III"之前,所以它匹配.如果我将正则表达式更改为"IV|III|II|I",则行为会得到纠正,但这显然不是一般的解决方案.

有没有办法让Java从一个交替组中选择最长的匹配,而不是选择"第一个"?

为清晰起见,代码示例:

public static void main(String[] args)
{
    Pattern p = Pattern.compile("six|sixty");
    Matcher m = p.matcher("The year was nineteen sixty five.");
    if (m.find())
    {
        System.out.println(m.group());
    }
    else
    {
        System.out.println("wtf?");
    }
}
Run Code Online (Sandbox Code Playgroud)

这输出 "six"

java regex regex-alternation

12
推荐指数
1
解决办法
1万
查看次数

有没有办法防止父容器在子节点聚焦时滚动?

情况:有一个固定高度的父div overflow: auto和足够高的子"line-item"div足以触发滚动条的存在.这些子div中的每一个都具有tabindex = -1,因此可以以编程方式聚焦.

当这些子div中的任何一个以编程方式聚焦时,浏览器的默认行为(在这种情况下,Chrome 55)似乎是滚动父div以使新聚焦的子中心居中.有什么方法可以防止这种行为吗?

html javascript focus dom-events

5
推荐指数
1
解决办法
449
查看次数

标签 统计

dom-events ×1

focus ×1

html ×1

java ×1

javascript ×1

regex ×1

regex-alternation ×1