省略键:字符串

时间:2015-08-08 00:43:24

标签: php regex

如何从字符串中完全省略/删除键:值项?

(\w+):"?\K((?(?<=")[^"]*|\w*))

我有这个正则表达式,它试图找到所有键:值或键:&#34;值&#34;项目。如何从字符串中完全删除这些项目?

I like to ride a camel tag:videos tag:nope country:"none" = I like to ride a camel

由于

4 个答案:

答案 0 :(得分:2)

preg_replace("@[^\s]+\:[^\s]+\ @",'',"I like to ride a camel tag:videos tag:nope ");

我不会描述preg_replace()方法的参数是什么,因为它只是在这里:http://php.net/manual/en/function.preg-replace.php

[^\s]可以是任何不是空格的字符(除了^之外的任何字符)。其背后的+意味着此角色可以出现1次或更多次。

  

\ s代表&#34;空白字符&#34;。再次,这个字符   实际上包括,取决于正则表达的味道。各种口味   在本教程中讨论,它包括[\ t \ r \ n \ f]。那是:\ s   匹配空格,制表符,换行符或换页符。大多数口味   还包括垂直选项卡,Perl(版本5.18之前)和   PCRE(版本8.34之前)是值得注意的例外。在口味中   支持Unicode,\ s通常包含Unicode中的所有字符   &#34;隔板&#34;类别。 Java和PCRE再次成为例外。但   JavaScript确实将所有Unicode空白与\ s匹配。

来源:http://www.regular-expressions.info/shorthand.html

@是分隔符。只要知道他们在PHP你总是要把你的正则表达式放在其中。分隔符可以是@/#,...

答案 1 :(得分:0)

我会用这个regx

{{1}}

比如这里

{{1}}

答案 2 :(得分:0)

我设法修改了一个正则表达式,但如果一个人可以改进它,我会很高兴!

/(tag:)"?((?(?<=")[^"]*"|\w*))/i

要完全删除所有排序键:值或键:“值”

(\w+:)"?((?(?<=")[^"]*"|\w*))

不幸删除空格

答案 3 :(得分:0)

\s*\S+:(["'])?.*?(?:\1|\s|$)

你可以使用它。参见演示。

https://regex101.com/r/eX9gK2/1