gpt4 book ai didi

java - 如何在 Java 中使用 Oracle 正则表达式或如何映射它们?

转载 作者:搜寻专家 更新时间:2023-10-31 19:36:59 24 4
gpt4 key购买 nike

如何在 Java 中使用 Oracle 正则表达式来获得相同的结果,或者如何基于 Oracle 正则表达式构建 Java 正则表达式。

甲骨文:

declare
str1 varchar2(50);
begin
str1 := REGEXP_SUBSTR('500 Oracle Parkway, Redwood Shores, CA', ',[^,]+,');
DBMS_OUTPUT.PUT_LINE(str1);
end;

结果:

, Redwood Shores,

Java:

String str1 = null;
Pattern pattern = Pattern.compile(",[^,]+,");
Matcher matcher = pattern.matcher("500 Oracle Parkway, Redwood Shores, CA");
if (matcher.find())
{
str1 = matcher.group(1);
}

但是这个正则表达式在 Java 中不起作用。它因以下异常而失败:

Exception in thread "main" java.lang.IndexOutOfBoundsException: No group 1
at java.util.regex.Matcher.group(Matcher.java:538)
at mousemover.Playground.main(Playground.java:16)

也许有一些算法可以映射正则表达式?

最佳答案

使用 Matcher.group()Matcher.group(0) 查找匹配项。调用第 1 组将不起作用,因为您没有在正则表达式中指定所谓的捕获组。

来自Javadoc of Matcher.group(int) :

Capturing groups are indexed from left to right, starting at one. Group zero denotes the entire pattern, so the expression m.group(0) is equivalent to m.group().

关于java - 如何在 Java 中使用 Oracle 正则表达式或如何映射它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43931854/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com