从字符串中删除2个字符之间的反斜杠

时间:2015-10-07 18:15:24

标签: php regex backslash

除了引号(“)

之外,我只需要在2个字符之间替换反斜杠

所以如果我有这个STRING:

When I look at you, I\understand why I live //replace
When I look at you, I "\understand why I live // No replace
When I look at you, I"\understand why I live // No replace
Sword art online\Мастера меча онлайн opening //replace Sword art online Мастера меча онлайн opening

这是一个json字符串,但是如果我使用stripslashes,则会删除所有后退。如果字符串没有“引号”,我只需要删除。

非常感谢。

2 个答案:

答案 0 :(得分:1)

您可以使用:

GameScene.pause()

或者这个:

class MyButton: UIButton {

    override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {

        //Button presses

    }

    override func touchesEnded(touches: Set<NSObject>, withEvent event: UIEvent) {

        //Button unpresses

    }
}

这两种模式消耗引号之间的字符。 第一种模式使用$text = preg_replace('~"[^"]*"\K|\\\\~', '', $text); 从匹配结果中删除左侧匹配的所有字符。第二个强制模式失败(使用$text = preg_replace('~"[^"]*"(*SKIP)(*F)|\\\\~', '', $text); )并且不重写引号之间的字符(使用\K)。

请注意,必须在模式字符串中写入文字反斜杠(*F)。 (反斜杠对字符串进行一次转义,对正则表达式引擎进行一次转义)。

答案 1 :(得分:0)

试试这个:

$strings = array(
    'When I look at you, I\understand why I live',
    'When I look at you, I "\understand why I live',
    'When I look at you, I"\understand why I live',
    'Sword art online\Мастера меча онлайн opening'
);

foreach ($strings as $string) {
    $str = addslashes(stripslashes($string));
    var_dump($str);
}