假设我有一个字符串 "\"Bob\",\"1\",\"Mary\",\"2\""。是否可以只删除数字周围的引号而不是字母?我已经尝试过前瞻/后视,但是后视的非可变长度让我感到困惑,我不知道如何解决这个问题。谢谢。
问问题
1806 次
1 回答
8
在 php 中:
<?php
$in = "\"Bob\",\"1\",\"Mary\",\"2\"";
$out = preg_replace('/"(\d)"/',"$1",$in);
echo $out;
?>
在 JavaScript 中:
var $in = "\"Bob\",\"1\",\"Mary\",\"2\"";
var $out = $in.replace(/"(\d)"/g,"$1");
alert($out);
我对 R 的最佳猜测:(我不是 R 程序员)
in <- "\"Bob\",\"1\",\"Mary\",\"2\""
out <- sub("\"([:digit:])\"","\\1",in)
print(out)
...这里\\1
等价于$1
和[:digit:]
等价于\d
解释正则表达式
phppreg_replace()
函数以字符串形式将正则表达式作为第一个参数,以字符串形式将替换值作为第二个参数,将source作为字符串形式的第三个参数,并返回修改后的字符串在正则表达式替换发生之后。
javascript.replace()
方法对源字符串进行操作,将正则表达式作为第一个参数,将替换字符串作为第二个参数。它在正则表达式替换后返回修改后的字符串。
在此示例中,正则表达式由(开始和结束)斜杠 ( /.../
) 分隔,并匹配\d
由括号 ( ) 捕获"(\d)"
并由引号 ( ) 括起来的任何数字 ( "(\d)"
)。在 javascript 中,该g
标志用于进行全局替换(对所有情况重复)。然后在替换中引用捕获的数字(因为它被括在括号中而被捕获),$1
表示第一个捕获的组。$0
匹配整个匹配的字符串。$2
将匹配第二个捕获的组 - 但此正则表达式中没有。正则表达式中括号中包含的任何内容都是一个捕获的组,可以通过它的索引在替换中引用$n
其中 n 是它的索引。因此,简单地说,正则表达式仅将所有出现在引号中的数字替换为该数字。
于 2011-07-19T08:12:58.610 回答