小编Evg*_*nia的帖子

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

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

甲骨文:

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

结果:

, Redwood Shores,
Run Code Online (Sandbox Code Playgroud)

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);
}
Run Code Online (Sandbox Code Playgroud)

但是这个正则表达式在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)
Run Code Online (Sandbox Code Playgroud)

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

java regex oracle

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

如何在 Java 中获取操作系统时区?

TimeZone.getDefault() 返回系统时区,直到它被更改。

示例 1:

System.out.println(TimeZone.getDefault());
Run Code Online (Sandbox Code Playgroud)

结果:

Europe/Kaliningrad
Run Code Online (Sandbox Code Playgroud)

是系统时区。

示例 2:

TimeZone.setDefault(TimeZone.getTimeZone("Asia/Kolkata"));
System.out.println(TimeZone.getDefault());
Run Code Online (Sandbox Code Playgroud)

结果:

Asia/Kolkata
Run Code Online (Sandbox Code Playgroud)

它不是系统时区,系统时区仍然是欧洲/加里宁格勒。

那么即使在更改默认 DateTimeZone 后,我怎样才能获得系统时区。

java timezone

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

标签 统计

java ×2

oracle ×1

regex ×1

timezone ×1