IntelliJ IDEA:用于删除 Oracle to_timestamp 语法的正则表达式

Gre*_*les 1 regex intellij-idea

我正在尝试提出一个搜索/替换表达式,它将从带有时间戳字段的 Oracle 样式插入转换为另一个数据库的插入语句。

基本上,我想转换字符串,如:

to_timestamp('13-SEP-09 12.00.00.000000000 PM','DD-MON-RR HH.MI.SS.FF AM')
Run Code Online (Sandbox Code Playgroud)

只是:

'13-SEP-09 12.00.00.000000000 PM'
Run Code Online (Sandbox Code Playgroud)

我在 IDEA 的搜索/替换框中尝试了几个表达式,但我仍然不太明白。这个:

to_timestamp(.[^,]*,.[^)]*)
Run Code Online (Sandbox Code Playgroud)

替换为 $1 最终匹配我想要的字符串,除了右括号之外,然后只删除第一部分。我最终得到:

('13-SEP-09 12.00.00.000000000 PM','DD-MON-RR HH.MI.SS.FF AM')
Run Code Online (Sandbox Code Playgroud)

我真的不明白这里发生了什么。

Ala*_*ore 5

看起来你想要:

to_timestamp\(('[^']*')[^)]*\)
Run Code Online (Sandbox Code Playgroud)

分解它:

to_timestamp 很明显

\( 匹配开头括号

( 开始捕捉

'[^']' 匹配第一个带引号的字符串

) 停止捕捉

[^)]*\) 匹配剩余的文本

如果这是您要匹配的整个字符串,而不仅仅是较大文本的一部分,则可以使用.*代替[^)]*\)最后一部分;你并不真正关心闭幕后会发生什么'