我使用Regex Substring来过滤掉开头为“p”、结尾在“-”之前的值。p后面跟有6位数字。
我的代码:
code,REGEXP_SUBSTR(CODE,'^[p][^-]+')
| CODE
|REGEXP_SUBSTR(CODE,'^[P][^-]+')
|
| - -|- -|
| p700401-显示器|p700401型|
| 第791701页-|p791701蛋白|
| 100-,第788001页-,|零值|
这就是结果,但我很难处理像第三排这样的案件。100-,p788001-
有人能指导我处理这类案件吗
3条答案
按热度按时间rnmwe5a21#
如果要匹配以逗号分隔的字符串中的完整术语,则可以用途:
其中,对于示例数据:
输出:
| 代码|结果|
| - -|- -|
| p700401-显示器|p700401型|
| 第791701页-|p791701蛋白|
| 100-,第788001页-,|p788001型|
| 123-,第456789页-某某,第987654页-|p987654型|
| 在此情况下,请使用以下命令:|p111111蛋白酶|
显示多个术语
如果要从字符串中删除不匹配的术语,请执行以下操作:
其中,输出:
| 代码|结果|
| - -|- -|
| p700401-显示器|p700401型|
| 第791701页-|p791701蛋白|
| 100-,第788001页-,|p788001型|
| 123-,第456789页-某某,第987654页-|p987654型|
| 在此情况下,请使用以下命令:|第111111页、第333333页、第444444页|
如果要将列表拆分为多行,请执行以下操作:
输出:
| 代码|项目|价值|
| - -|- -|- -|
| p700401-显示器|一个|p700401型|
| 第791701页-|一个|p791701蛋白|
| 100-,第788001页-,|2个|p788001型|
| 123-,第456789页-某某,第987654页-|三个|p987654型|
| 在此情况下,请使用以下命令:|一个|p111111蛋白酶|
| 在此情况下,请使用以下命令:|三个|第333333页|
| 在此情况下,请使用以下命令:|四个|第444444页|
fiddle
a64a0gku2#
对于您发布的示例数据,这将返回您想要的结果(即,“p”后跟6位数字):
avwztpqn3#
对 , 我 的 两 点 意见 是 使用
REGEXP_REPLACE()
:中 的 每 一 个
结果 :
| 代码|结果|
| - -| - -|
| p700401 - 显示 器|p700401 型|
| 第 791701 页 -| p791701 蛋白|
| 100 - , 编号 Z123456|零 值|
| 100 - , 第 788001 页 - ,|p788001 型|
| 第 788001 页 - , 100 页 -| p788001 型|
| 123 - , 第 456789 页 - 某某 , 第 987654 页 -|第 456789 页 、 第 987654 页|
这 是 一 个 嵌套 语句 , 因为 它 不 支持 每个 给定 链接 的 方便 的 正则 表达式 语法 。
第 一 个 正则 表达式 模式 应该 是 用来 替换 任何 你 想要 的 以外 的 东西 , 参见 在线 的 demo 。 第 二 个 是 用来 插入 逗号 来 分隔 这些 值 , 参见 demo 。