Regex 如何将一组值与组1匹配
正在解决SO中发布的一个正则表达式问题,但被困于此 从这个字符串Regex 如何将一组值与组1匹配,regex,pcre,Regex,Pcre,正在解决SO中发布的一个正则表达式问题,但被困于此 从这个字符串 Ob=Web technology,OB=Product SPe,OB=Dev profile,OB=Computer Management,oB=Hardware Services,cd=sti,CD=com,cd=ws 必须按如下方式删除这些值 Web technology,Product SPe,Dev profile,Computer Management,Hardware Services 我在试下面的正则表达式 (
Ob=Web technology,OB=Product SPe,OB=Dev profile,OB=Computer Management,oB=Hardware Services,cd=sti,CD=com,cd=ws
必须按如下方式删除这些值
Web technology,Product SPe,Dev profile,Computer Management,Hardware Services
我在试下面的正则表达式
(?=Ob)(?:(\w+=)([\w\s]+,?))+
我的假设是group 1
应该拥有所有的键,group 2
应该拥有所有的值。但是除了最后一个键值对之外,所有其他键值对都被分配到组0
是否有办法将所有值发送到组2
和.正则表达式:
(?i)Ob=([^,]+)|(?!.*\bob\b).+
替换字符串:
$1
将进行不区分大小写的匹配(?i)
组索引1包含所有Ob值Ob=([^,]+)
或|
匹配任何字符一次或多次,但不包含(?!.*\bob\b)。+
\bob\b
空字符串
。请参阅演示。不要忘记标记i
或
尝试此操作。替换为$1
。请参阅演示
此正则表达式适用于您:
^(?!Ob=).*(*SKIP)(*F)|(\w+)=(\w+(?=,|$))
您可以看到,您将获得组1中的所有键和组2中的所有值
正则表达式的问题是
group1
和group2
包含在非捕获组中。这导致使用组0
捕获整个正则表达式。另一件事是积极的前瞻性阻止了正则表达式进行全局匹配
下面的正则表达式将收集所有键
到组1
和值
到组2
(\w+)=([\w\s]+)(?=[,\s]+)
看看它是怎么做到的 @Yal您的预期输出是什么?
^(?!Ob=).*(*SKIP)(*F)|(\w+)=(\w+(?=,|$))
(\w+)=([\w\s]+)(?=[,\s]+)