我在甲骨文中苦苦挣扎。
我希望“
执行”Command(“和”)之间的所有内容字符串:
命令(grep)ex.txt)由user1 @ server03以root @ server03
执行
期望的结果:
grep \)ex.txt
我在这个网站上测试de regex:https://regex101.com
此解决方案适用于网站但不在我的选择中:
(?< = Command()(。?)(?= \ e ))
选择使用:
选择 REGEXP_SUBSTR(MSG,'(?< = Command()(。?)(?= \ e ))',1)as command 来自COMMANDS
表达式(([^)] +))有效,除非字符串中有另一个“)”。这就是为什么我在尝试字符串之间的方法,而不仅仅是在括号内。
非常感谢
答案 0 :(得分:4)
您可以使用REGEXP_SUBSTR
匹配整个Command (...) executed by
表达式,并使用捕获组提取所需的部分:
Oracle 11g R2架构设置:
CREATE TABLE Data ( Str ) AS
SELECT 'Command (grep ) ex.txt) executed by user1@server03 as root@server03' FROM DUAL;
查询1 :
SELECT REGEXP_SUBSTR( Str, 'Command \((.*?)\) executed by', 1, 1,'i', 1 ) AS Match
FROM Data
<强> Results 强>:
| MATCH |
|---------------|
| grep ) ex.txt |
答案 1 :(得分:-1)
\(.*\)
- 这会有用。
>>> s
'Command (grep ) ex.txt) executed by user1@server03 as root@server03'
>>> re.search(r'\(.*\)', s).group()
'(grep ) ex.txt)'