使用正则表达式从逗号分隔列表中删除重复项 [重复]

     2023-03-28     182

关键词:

【中文标题】使用正则表达式从逗号分隔列表中删除重复项 [重复]【英文标题】:Remove duplicates from comma separated list with regexp [duplicate] 【发布时间】:2018-01-07 08:26:59 【问题描述】:

我有

contract, clause 1, Subsection 1.1, contract, clause 1, Subsection 1.2,
paragraph (a), contract, clause 1, Subsection 1.2, paragraph (b), contract, 
clause 2 

我想得到

contract, clause 1, Subsection 1.1, Subsection 1.2, paragraph (a), paragraph 
(b), clause 2

我发现 regexp 可以做到这一点,但我找不到使用哪个字符串来做到这一点

请帮忙..

【问题讨论】:

除非您尝试并在此处发布您的尝试,否则人们可能不愿意提供帮助。 【参考方案1】:

基于this link将逗号分隔的值拆分为行,我将字符串拆分为行,保留第一次出现的位置,对值进行重新聚合

with test_string as ( 
select 1 as id,
 'contract, clause 1, Subsection 1.1, contract, clause 1, Subsection 1.2, paragraph (a), contract, clause 1, Subsection 1.2, paragraph (b), contract, clause 2' val 
from dual)
select id, listagg(word,', ') WITHIN GROUP (order by position) FROM (
select distinct id, first_value(position) over ( partition by word order by position ) position, word from (
select 
  distinct t.id,
  levels.column_value as position,
  trim(regexp_substr(t.val, '[^,]+', 1, levels.column_value))  as word
from 
  test_string t,
  table(cast(multiset(select level from dual connect by  level <= length (regexp_replace(t.val, '[^,]+'))  + 1) as sys.OdciNumberList)) levels
  )
) GROUP BY id

如果您对保持订单不感兴趣

with test_string as ( 
select 1 as id,
 'contract, clause 1, Subsection 1.1, contract, clause 1, Subsection 1.2, paragraph (a), contract, clause 1, Subsection 1.2, paragraph (b), contract, clause 2' val 
from dual)
select id, listagg(word,', ') WITHIN GROUP (order by 1) FROM (
select 
  distinct t.id,
  trim(regexp_substr(t.val, '[^,]+', 1, levels.column_value))  as word
from 
  test_string t,
  table(cast(multiset(select level from dual connect by  level <= length (regexp_replace(t.val, '[^,]+'))  + 1) as sys.OdciNumberList)) levels
) GROUP BY id

【讨论】:

也许有更简单的解决方案,但我没有想到 没看到这里的答案完全一样(***.com/questions/40259200/…)可能更好 非常感谢@LauDec,你解决了我的问题...

如何通过 Oracle regexp_replace 中的正则表达式从逗号分隔列表中删除重复项? [复制]

】如何通过Oracleregexp_replace中的正则表达式从逗号分隔列表中删除重复项?[复制]【英文标题】:HowtoremoveduplicatesfromcommaseparatedlistbyregexinOracleregexp_replace?[duplicate]【发布时间】:2014-12-2715:09:40【问题描述】:我有\'VA-HRD1,VA-HRD1,VA-NO... 查看详情

正则表达式从逗号分隔列表中删除连续重复(整数和/或浮点数)

】正则表达式从逗号分隔列表中删除连续重复(整数和/或浮点数)【英文标题】:RegextoDeleteConsecutiveDuplicates(integersand/orfloats)fromCommaSeparatedList【发布时间】:2021-06-2415:15:30【问题描述】:据我所知,这里没有这样的确切问题。... 查看详情

如何通过 Oracle 中的 regexp_replace 从逗号分隔列表中删除重复项?

】如何通过Oracle中的regexp_replace从逗号分隔列表中删除重复项?【英文标题】:Howtoremoveduplicatesfromcommaseparatedlistbyregexp_replaceinOracle?【发布时间】:2016-10-2607:38:39【问题描述】:我有POW,POW,POWPRO,PRO,PRO,PROUTL,TNEUTL,TNEUTL,UTL,UTLTNE,UTL,UTL... 查看详情

从逗号分隔的字符串中删除重复项

...tedString【发布时间】:2012-07-1016:06:58【问题描述】:如何使用jquery/javascript从逗号分隔的整数字符串中删除重复项?我的字符串是:1,2,2,4,2,4,3,2,3,1,5,5,5,1,1,2【问题讨论】:复制什么?请举个例子。我相信这可能会有所帮助:***.co... 查看详情

逗号分隔的列表正则表达式 [重复]

】逗号分隔的列表正则表达式[重复]【英文标题】:commaseparatedlistregex[duplicate]【发布时间】:2015-12-0117:42:02【问题描述】:如何制作一个jquery正则表达式来检测逗号分隔的列表。它应该在列表中接受一个字符1好2,3好的2,,3-不好2,,... 查看详情

从逗号分隔的字符串中删除重复项 (Amazon Redshift)

...shift)【发布时间】:2016-10-0704:51:15【问题描述】:我正在使用AmazonRedshift。我在该字符串中有一个列存储为逗号分隔,如Private,Private,Private,Private,Private,Private,Unite 查看详情

使用python从不同长度的元组列表中删除重复项

...【发布时间】:2019-01-0313:00:43【问题描述】:我使用正则表达式等从文本中提取特定名称。结果是包含标题和名称的元组列表。元组的长度可能不同。lst下面列出了可能的情况。我需要从结果中删除重复的名称。例如,(\'Lord\',\'... 查看详情

PL/SQL 逗号分隔列表;删除重复并放入数组

】PL/SQL逗号分隔列表;删除重复并放入数组【英文标题】:PL/SQLcommadelimitedlist;removedupsandputinarray【发布时间】:2017-02-2120:19:04【问题描述】:我在PL/SQL过程中有一个逗号分隔列表作为字符串。我需要删除重复项将列表放入数组中... 查看详情

如何使用正则表达式验证逗号分隔的字符串 [重复]

】如何使用正则表达式验证逗号分隔的字符串[重复]【英文标题】:Howtovalidatecomma-separatedstringusingRegex[duplicate]【发布时间】:2020-08-2419:12:01【问题描述】:我需要验证我的c#模型类。[Required(ErrorMessage="CommaSeparatedStringRequired")][Regul... 查看详情

使用正则表达式从python中的列表项中删除子字符串

】使用正则表达式从python中的列表项中删除子字符串【英文标题】:Usingregextoremovesubstringsfromlistitemsinpython【发布时间】:2014-06-2515:50:36【问题描述】:我确定这一定是一个重复的问题,但我在任何地方都找不到答案。我有一个... 查看详情

如何通过 Oracle regexp_replace 从空格分隔列表中删除重复项? [复制]

】如何通过Oracleregexp_replace从空格分隔列表中删除重复项?[复制]【英文标题】:HowtoremoveduplicatesfromspaceseparatedlistbyOracleregexp_replace?[duplicate]【发布时间】:2017-03-0815:18:48【问题描述】:我有一个名为“ABAACD”的列表。我的预期结... 查看详情

set() 不删除重复项

...间】:2016-08-1312:49:35【问题描述】:我正在尝试使用正则表达式在文件中查找IP地址的唯一实例。我发现它们很好,并尝试将它们附加到列表中,然后尝试在我的列表中使用set()删除重复项。我发现每个项目都很好,并且有重复... 查看详情

如何使用列表理解从列表中删除重复项? [复制]

】如何使用列表理解从列表中删除重复项?[复制]【英文标题】:Howtoremoveduplicateitemsfromalistusinglistcomprehension?[duplicate]【发布时间】:2012-05-1922:21:07【问题描述】:如何使用列表推导从列表中删除重复项?我有以下代码:a=[1,2,3,3,... 查看详情

从正则表达式匹配中删除最后一个字符[重复]

】从正则表达式匹配中删除最后一个字符[重复]【英文标题】:Removelastcharacterfromregexmatch[duplicate]【发布时间】:2019-12-1919:28:05【问题描述】:我的字符串是航空公司代码/航班号的串联,用;分隔。航空公司代码和航班号由空格或... 查看详情

使用 Guava 从列表中删除重复项

】使用Guava从列表中删除重复项【英文标题】:RemoveduplicatesfromListusingGuava【发布时间】:2012-08-2720:23:51【问题描述】:我们如何在Guavaapi的帮助下从List中删除重复项?目前我正在关注这个:privateList<T>removeDuplicate(List<T>li... 查看详情

从 Boost::Tokenizer 中删除重复项?

...间】:2012-11-2312:06:50【问题描述】:我正在尝试拆分一个逗号分隔的字符串,然后对每个令牌执行一些操作,但忽略重复项,等等。大致如下:intmain(int,char**)stringtext="token,teststring";char_separator<cha 查看详情

使用循环从字符数组列表中删除重复项? [复制]

】使用循环从字符数组列表中删除重复项?[复制]【英文标题】:Removingduplicatesfromanarraylistofcharactersusingaloop?[duplicate]【发布时间】:2015-12-0707:06:52【问题描述】:publicstaticArrayList<Character>removeDuplicates(ArrayList<Character>data)A... 查看详情

正则表达式 - 匹配由引号定义并用逗号分隔的字符串 [重复]

】正则表达式-匹配由引号定义并用逗号分隔的字符串[重复]【英文标题】:Regex-Matchstringsdefinedbyquotesandseparatedbycommas[duplicate]【发布时间】:2020-02-1209:35:03【问题描述】:我需要帮助设置一个可以将某些字符串与某些逗号分隔开... 查看详情