我想删除字符串的一部分,如下例所示(使用正则表达式和preg_replace):
abcd,{{any_word |same_word_but_to_keep}},efg...
结果应该是:
abcd,{{same_word_but_to_keep}},efg...
有什么想法吗?
另一个例子:
Bellevue,Bergouey |Bergouey(tokeep),Bourdious
结果应该是:
Bellevue,Bergouey,Bourdious
非常感谢!!
答案 0 :(得分:2)
您可以使用以下正则表达式:
ldconfig
答案 1 :(得分:1)
尝试:
preg_match_all("/\|(.*?) /", $your_string, $matches);
foreach ($matches[1] as $match) {
$your_string = preg_replace("/([^\|]|^)$match/", "", $your_string);
}
$your_string = preg_replace("/\|/", "", $your_string);
preg_match_all("/\|(.*?) /", $your_string, $matches)
获取|
preg_replace("/([^\|]|^)$match/", "", $your_string)
移除所有不在|
之前的匹配项,并说明匹配的字词是否位于字符串的开头|^
preg_replace("/\|/", "", $your_string)
从字符串|
的出现
答案 2 :(得分:1)
我会这样做:
preg_replace('/(\w+),(\w+)\s*\|\2,(.+)/', "$1,$2,$3", $string);
<强>解释强>
(\w+) : group 1, a word
, : a comma
(\w+) : group 2, a word
\s* : white spaces, optional
\| : a pipe character
\2 : back reference to group 2
, : a comma
(.+) : rest of the string
答案 3 :(得分:0)
最后我找到了一个没有正则表达式的解决方案,它运行得很完美:
$mystring="Arance,la Campagne,Gouze |Gouze,Lendresse";
$tmp="";
$words=explode(",",$mystring);
foreach($words as $word){
if(strpos($word,"|")){
$l=explode("|",$word);
$tmp=$tmp.$l[1].",";
}else{$tmp=$tmp.$word.",";}
}
$mystring=$tmp;