Javascript 如何只抓住什么';在下面的正则表达式中,引号之间是?
以下正则表达式与引号内的子字符串匹配:Javascript 如何只抓住什么';在下面的正则表达式中,引号之间是?,javascript,regex,Javascript,Regex,以下正则表达式与引号内的子字符串匹配: ^("[^"]*")$ “对话,”她说。“更多对话。” 我不想抓住引号(只想抓住引号内的内容)。所以我想我应该使用“向前看”和“向后看”: ^((?<=")[^"]*(?="))$ ^((?您得到的匹配太多,因为断言与“不匹配,所以两个双引号之间的任何内容都是匹配的 您可以在左侧断言一个“,然后在右侧断言一个”,然后是可选的“对,直到字符串结束 假设双引号之间没有转义双引号 (?<
^("[^"]*")$
“对话,”她说。“更多对话。”
我不想抓住引号(只想抓住引号内的内容)。所以我想我应该使用“向前看”和“向后看”:
^((?<=")[^"]*(?="))$
^((?您得到的匹配太多,因为断言与“
不匹配,所以两个双引号之间的任何内容都是匹配的
您可以在左侧断言一个“
,然后在右侧断言一个”
,然后是可选的“
对,直到字符串结束
假设双引号之间没有转义双引号
(?<=")[^"]*(?="(?:[^"]*"[^"]*")*[^"]*$)
(?亲吻
问题中的正则表达式过于具体(分解):
这将只匹配表单的字符串:
"some string"
anything "some string" (does not start with a quote
"some string" anything (does not end with a quote)
例如,它不会匹配以下表单的字符串:
"some string"
anything "some string" (does not start with a quote
"some string" anything (does not end with a quote)
因此,如果目标是捕获带引号的字符串,那么就不要在捕获组中包含引号:
"([^"]*)"
然后引用捕获组,而不是整个匹配字符串
应用于Javascript
考虑以下代码:
input = '"one" something "two" something "three" etc.';
regex = /"([^"]*)"/;
match = input.match(regex);
匹配包含:[“\'one\”,“one”]
-0项是完整的匹配字符串,1项是第一个捕获组。根据相关情况调整js代码。您可以删除锚和捕获组(?@Thefourthbird这种方法很有效……但是现在她说的也被捕获了。对于示例字符串,我只看到对话的匹配,
看到@Thefourthbird,当后面有另一个引号时,会发生这种情况:然后你可以使用(?哇,太长了。但是它成功了。@alexchenco我想如果你想在双引号之间允许转义的\“
,时间会更长。我想你是对的。我正在做。替换,所以我想我可以写”。。。“
如果我想保留引号,请在replace参数中。呃,好的,因此这是一个x/y问题。请始终询问您想做什么,而不是您当前试图如何解决它(:)。