我如何匹配" text"周围的报价?在下面的字符串而不是" TEST TEXT"使用RegEx。我只想在他们自己的时候引用它。我尝试了一个负向前瞻(第二个引用)但它仍然捕获了TEST TEXT周围两个引号中的第二个。
This is some "text". This is also some ""TEST TEXT""
请注意我需要缩放,所以有时它会在字符串的中间,所以像这样:
/(\s|\w)(\")(?!")/g (using $2...)
在这个示例中可以工作,但如果字符串是:
则不行This is some^"text".This is also some ""TEST TEXT""
我只需要自己做引号。
仅供参考,这需要是Javascript RegEx,所以对于我来说,lookbehind不是我的选择。
答案 0 :(得分:2)
由于你还没有标记任何特殊的正则表达式,我也很自由地使用了lookbehind。您可以使用:
(?<!")"(?!")[^"]*"
更新:对于使用Javascript,您可以使用此正则表达式:
/""[^"]*""|(")([^"]*)(")/
并使用捕获的组#1作为您的文本。
答案 1 :(得分:0)
我不确定我是否真的了解你的需求。我将发布此答案以检查它是否对您有所帮助,但如果它没有,我可以将其删除。
那么,这是你想要的这个正则表达式:
"\w+?"
<强> Working demo 强>
顺便说一句,如果您只想获取"..."
内的内容,可以使用此正则表达式:
"(\w+?)"
<强> Working demo 强>
答案 2 :(得分:0)
您无法使用纯JavaScript regexp执行此操作。我现在要吃掉我的话,因为你可以使用回调参数使用以下解决方案:
var regex = /""+|(")/g
replaced = subject.replace(regex, function($0, $1) {
if ($1 == "\"") return "-"; // What to replace to?
else return $0;
});
"This is some -text-. This is also some ""TEST TEXT"""
如果你需要正则表达式来分割字符串,那么你可以使用上面的代码将匹配替换为独特的东西,然后按它们分开:
var regex = /""+|(")/g
replaced = subject.replace(regex, function($0, $1) {
if ($1 == "\"") return "☺";
else return $0;
});
splits = replaced.split("☺");
["This is some ", "text", ". This is also some ""TEST TEXT"""]