Mic*_*ael 1 regex lookahead lookbehind
假设我有一个字符串"\"Bob \",\"1 \",\"Mary \",\"2 \"".是否可以只删除数字周围的引号而不是字母?我已经尝试了前瞻/后退,但是后视的非可变长度搞砸了我,我不知道如何解决问题.谢谢.
在PHP中:
<?php
$in = "\"Bob\",\"1\",\"Mary\",\"2\"";
$out = preg_replace('/"(\d)"/',"$1",$in);
echo $out;
?>
Run Code Online (Sandbox Code Playgroud)
在javascript中:
var $in = "\"Bob\",\"1\",\"Mary\",\"2\"";
var $out = $in.replace(/"(\d)"/g,"$1");
alert($out);
Run Code Online (Sandbox Code Playgroud)
我对R的最佳猜测:(我不是R程序员)
in <- "\"Bob\",\"1\",\"Mary\",\"2\""
out <- sub("\"([:digit:])\"","\\1",in)
print(out)
Run Code Online (Sandbox Code Playgroud)
......这里\\1
相当于$1
和[:digit:]
等同于\d
解释正则表达式
php preg_replace()
函数将一个正则表达式作为字符串形式的第一个参数,一个替换值作为字符串形式的第二个参数,将source作为字符串形式的第三个参数,并返回修改后的字符串经过正则表达式更换后.
javascript .replace()
方法对源字符串进行操作,将正则表达式作为第一个参数,将替换字符串作为第二个参数.它在正则表达式替换后返回修改后的字符串.
在此示例中,正则表达式由(开始和结束)斜杠(/.../
)分隔,并匹配\d
由括号("(\d)"
)捕获并用引号("(\d)"
)括起的任何数字().在javascript中,g
标志用于使替换全局(对所有出现重复).然后在替换中引用捕获的数字(因为它被括在括号中而被捕获),$1
意味着第一个捕获的组.$0
匹配整个匹配的字符串.$2
将匹配第二个被捕获的组 - 但这个正则表达式中没有.正则表达式中括号内包含的任何内容都是一个捕获的组,并且可以通过其索引替换引用,$n
其中n是它的索引.简而言之,正则表达式用数字替换引号括起来的数字的所有出现.
归档时间: |
|
查看次数: |
1721 次 |
最近记录: |