当前位置: 首页 > 知识库问答 >
问题:

与PCRE/eth等价的Java正则表达式。速记'\k'?

拓拔泉
2023-03-14

Perl RegEx和PCRE(与Perl兼容的RegEx)等都有\k这样的简写,可以丢弃左边的所有匹配项,但Java不支持它,那么Java的等价物是什么呢?

共有1个答案

闾丘坚诚
2023-03-14

没有直接等价物。但是,您总是可以使用捕获组重写这样的模式。

如果仔细研究\k运算符及其限制,就会发现可以用捕获组来替换此模式。

请参见rexegg.com\k参考:

因此,值\s*=\s*\k\d+PCRE/onigmo模式将转换为以下Java代码:

String s = "Min value = 5000 km";
Matcher m = Pattern.compile("value\\s*=\\s*(\\d+)").matcher(s);
if(m.find()) {
    System.out.println(m.group(1));
}

有一个替代方案,但只能用于更小、更简单的模式。宽度受限的查找:

只要匹配字符串的长度在预先确定的范围内,Java就可以接受lookbehind中的量词。例如,(?<=cats?)有效,因为它只能匹配三个或四个字符的字符串。同样,(?<=a{1,10})也是有效的。

所以,这也会起作用:

    m = Pattern.compile("(?<=value\\s{0,10}=\\s{0,10})\\d+").matcher(s);
    if(m.find()) {
        System.out.println(m.group());
    }
    

请参见Java演示。

 类似资料:
  • 问题内容: Perl RegEx和PCRE(与Perl兼容的RegEx)等具有简化的功能,可以丢弃除捕获组之外左侧的所有匹配项,但是Java不支持它,那么Java等效于它吗? 问题答案: 没有直接的等价物 。但是,您始终可以使用 捕获组 重新编写此类模式。 如果仔细研究运算符及其限制,您会发现可以使用 捕获组 替换此模式。 请参阅rexegg.com 参考: 在模式中间,说“将已报告比赛的开始重置

  • 问题内容: 我必须在Python中基于PCRE解析一些字符串,而且我不知道该怎么做。 我要解析的字符串如下所示: 在此示例中,我必须获得以下不同项: 我发现与Python中的PCRE操作有关的唯一内容是以下模块:http : //pydoc.org/2.2.3/pcre.html(但它被编写为.so文件…) 您知道是否存在一些Python模块可以解析这种字符串吗? 问题答案: Python如何处理

  • 有没有人试图描述与正则表达式匹配的正则表达式? 由于重复的关键字,这个主题几乎不可能在网上找到。 它可能在实际应用程序中不可用,因为支持正则表达式的语言通常具有解析它们的方法,我们可以将其用于验证,以及一种在代码中分隔正则表达式的方法,可用于搜索目的。 但是我仍然想知道匹配所有正则表达式的正则表达式是什么样子的。应该可以写一个。

  • 本文向大家介绍正则表达式速查表,包括了正则表达式速查表的使用技巧和注意事项,需要的朋友参考一下 字符 字符类 预定义字符类 POSIX 字符类(仅 US-ASCII) java.lang.Character 类(简单的 java 字符类型) Unicode 块和类别的类 边界匹配器 Greedy 数量词 Reluctant 数量词 Possessive 数量词 Logical 运算符 Back 引

  • 问题内容: 哪些正则表达式可以在Python源代码中找到三引号注释(可能是多行)? 问题答案: Python不是常规语言,因此无法使用正则表达式可靠地进行解析。 如果您想要合适的Python解析器,请查看ast模块。您可能正在寻找。

  • 我需要一些java正则表达式的帮助。我有下面的字符串,我需要从中提取信息 我需要正则表达式提取所有价格(键、值)对,如(,),(,) 或者可以使用regex提取所提供密钥的价格。i、 e.应提供 有人能帮忙吗?