Oracle SQL - 使用 REGEXP_REPLACE() 的正则表达式匹配
Oracle SQL - Regular Expression matching using REGEXP_REPLACE()
早上好,
我希望在编写 select 查询以从列中删除一些文本方面得到帮助。
我在之前的查询中创建了一个名为 "TEXT_MINING" 的列,不同的开发人员编写的一些代码将对其执行一些文本挖掘分析。 TEXT_MINING 列的文本如下所示:
员工在锤子上发现破损的手柄 * 02-08-18 15:19:22 下午 * 我发现一把锤子,手柄上的木头裂开,被扔进了废料。
我想删除 * 和两个 * 之间的所有文本,以帮助我的软件工程师进行一些文本挖掘。这是我目前的困境:
我不仅不知道如何使用REGEXP_REPLACE,而且我无法计算出REGEXP。我目前有:
^[*]\w[*]$
看起来像:
REGEXP_REPLACE(col, '^[*]\w[*]$', '')
有人可以指点一下吗?
谢谢!
这可能是一种方式:
select regexp_replace(yourString, '\*.*\*', '') from yourTable
请注意,这将删除字符串中第一个和最后一个“*”之间的所有内容;例如:
with test(x) as (
select 'Something * something else * and a * just before another * and something more' from dual
)
select regexp_replace(x, '\*.*\*', '') from test
给出:
Something and something more
您可以使用此方法删除列中 1 次以上出现的 *...*
子字符串:
SELECT REGEXP_REPLACE(
'EMPLOYEE FOUND BROKEN HANDLE ON HAMMER * 02-08-18 15:19:22 PM * I found a hammer that had the wood split on the handle, tossed into scrap.',
'\s*\*[^*]*\*',
''
) as Result from dual
图案详情
\s*
- 0+ 个空格
\*
- 一个 *
字符
[^*]*
- *
以外的 0+ 个字符
\*
- 一个 *
字符。
参见regex demo。
早上好,
我希望在编写 select 查询以从列中删除一些文本方面得到帮助。
我在之前的查询中创建了一个名为 "TEXT_MINING" 的列,不同的开发人员编写的一些代码将对其执行一些文本挖掘分析。 TEXT_MINING 列的文本如下所示:
员工在锤子上发现破损的手柄 * 02-08-18 15:19:22 下午 * 我发现一把锤子,手柄上的木头裂开,被扔进了废料。
我想删除 * 和两个 * 之间的所有文本,以帮助我的软件工程师进行一些文本挖掘。这是我目前的困境:
我不仅不知道如何使用REGEXP_REPLACE,而且我无法计算出REGEXP。我目前有:
^[*]\w[*]$
看起来像:
REGEXP_REPLACE(col, '^[*]\w[*]$', '')
有人可以指点一下吗?
谢谢!
这可能是一种方式:
select regexp_replace(yourString, '\*.*\*', '') from yourTable
请注意,这将删除字符串中第一个和最后一个“*”之间的所有内容;例如:
with test(x) as (
select 'Something * something else * and a * just before another * and something more' from dual
)
select regexp_replace(x, '\*.*\*', '') from test
给出:
Something and something more
您可以使用此方法删除列中 1 次以上出现的 *...*
子字符串:
SELECT REGEXP_REPLACE(
'EMPLOYEE FOUND BROKEN HANDLE ON HAMMER * 02-08-18 15:19:22 PM * I found a hammer that had the wood split on the handle, tossed into scrap.',
'\s*\*[^*]*\*',
''
) as Result from dual
图案详情
\s*
- 0+ 个空格\*
- 一个*
字符[^*]*
-*
以外的 0+ 个字符
\*
- 一个*
字符。
参见regex demo。