不在某些字符之间的所有单词的Javascript正则表达式
我正在尝试返回不在方括号内的所有单词的计数。如此给定不在某些字符之间的所有单词的Javascript正则表达式,javascript,regex,Javascript,Regex,我正在尝试返回不在方括号内的所有单词的计数。如此给定 [don't match these words] but do match these 最后四个字我数到4 这在.net中起作用: \b(?<!\[)[\w']+(?!\])\b \b(?我会使用类似于\[^\]*\]的方法删除方括号中的单词,然后按空格分解返回的字符串以计算剩余的单词。我会使用类似于\[^\]]*\]删除方括号中的单词,然后按空格分解返回的字符串以计算剩余的单词。好的,我认为这应该可以: \[[^\]]+\](?
[don't match these words] but do match these
最后四个字我数到4
这在.net中起作用:
\b(?<!\[)[\w']+(?!\])\b
\b(?我会使用类似于\[^\]*\]
的方法删除方括号中的单词,然后按空格分解返回的字符串以计算剩余的单词。我会使用类似于\[^\]]*\]
删除方括号中的单词,然后按空格分解返回的字符串以计算剩余的单词。好的,我认为这应该可以:
\[[^\]]+\](?:^|\s)([\w']+)(?!\])\b|(?:^|\s)([\w']+)(?!\])\b
您可以在此处进行测试:
如果您需要在正文后面加上方括号中的文本的备选方案,可以将其作为第二个备选方案添加,当前的第二个备选方案将变为第三个。
这有点复杂,但我现在想不出更好的解决办法
如果您需要对实际匹配进行处理,您将在捕获组中找到它们
更新:
说明:
因此,我们有两个选择:
\[^\]+\](?:^\s)([\w']+(?!\])\b
这是说:
\[^\]+\]
-匹配方括号中的所有内容(不捕获)
(?:^ |\s)
-后跟行开始或空格-当我现在看到它时,请将插入符号去掉,因为它没有意义,因此这将变成\s
([\w']+)
-匹配以下所有单词字符,只要(?!\])
下一个字符不是右括号-这可能现在也不需要了,所以让我们尝试删除前向
\b
-并匹配单词边界
2(?:^\s)([\w']+)(?!\])\b
如果您找不到选项1-只进行单词匹配,而不查找方括号,因为我们在第一部分中确保它们不在这里
好的,所以我删除了所有我们不需要的东西(它们留在那里,因为我在它工作之前尝试了很多选项:-),修改后的正则表达式如下所示:
\[[^\]]+\]\s([\w']+)(?!\])\b|(?:^|\s)([\w']+)\b
好的,我认为这应该有效:
\[[^\]]+\](?:^|\s)([\w']+)(?!\])\b|(?:^|\s)([\w']+)(?!\])\b
您可以在此处进行测试:
如果您需要在正文后面加上方括号中的文本的备选方案,可以将其作为第二个备选方案添加,当前的第二个备选方案将变为第三个。
这有点复杂,但我现在想不出更好的解决办法
如果您需要对实际匹配进行处理,您将在捕获组中找到它们
更新:
说明:
因此,我们有两个选择:
\[^\]+\](?:^\s)([\w']+(?!\])\b
这是说:
\[^\]+\]
-匹配方括号中的所有内容(不捕获)
(?:^ |\s)
-后跟行开始或空格-当我现在看到它时,请将插入符号去掉,因为它没有意义,因此这将变成\s
([\w']+)
-匹配以下所有单词字符,只要(?!\])
下一个字符不是右括号-这可能现在也不需要了,所以让我们尝试删除前向
\b
-并匹配单词边界
2(?:^\s)([\w']+)(?!\])\b
如果您找不到选项1-只进行单词匹配,而不查找方括号,因为我们在第一部分中确保它们不在这里
好的,所以我删除了所有我们不需要的东西(它们留在那里,因为我在它工作之前尝试了很多选项:-),修改后的正则表达式如下所示:
\[[^\]]+\]\s([\w']+)(?!\])\b|(?:^|\s)([\w']+)\b
Chris,重新提出这个问题,因为它有一个简单的解决方案,但没有提到。(在对有关的一般问题进行研究时发现了您的问题。)
下面是我们的简单正则表达式(请在工作时查看,查看右下面板中的组捕获):
交替的左侧匹配完整的[括号内的组]
。我们将忽略这些匹配。右侧匹配并捕获组1中的单词,我们知道它们是正确的单词,因为它们与左侧的表达式不匹配
此程序显示如何使用正则表达式(请参阅中的计数结果):
var subject='[不要匹配这些单词],但一定要匹配这些';
var regex=/\[^\]*\]|(\b\w+\b)/g;
var group1Caps=[];
var match=regex.exec(主题);
//将组1捕获放入数组中
while(匹配!=null){
如果(匹配[1]!=null)group1Caps.push(匹配[1]);
match=regex.exec(主题);
}
文档。写入(“
***匹配数***
”;
文件写入(分组1卷长度);
参考
克里斯,重新提出这个问题,因为它有一个简单的解决方案,但没有提到。(在对一个关于的一般问题进行研究时发现了你的问题。)
下面是我们的简单正则表达式(请在工作时查看,查看右下面板中的组捕获):
交替的左侧匹配完整的[括号内的组]
。我们将忽略这些匹配。右侧匹配并捕获组1中的单词,我们知道它们是正确的单词,因为它们与左侧的表达式不匹配
此程序显示如何使用正则表达式(请参阅中的计数结果):
var subject='[不要匹配这些单词],但一定要匹配这些';
var regex=/\[^\]*\]|(\b\w+\b)/g;
var group1Caps=[];
var match=regex.exec(主题);
//将组1捕获放入数组中
while(匹配!=null){
如果(匹配[1]!=null)group1Caps.push(匹配[1]);
match=regex.exec(主题);
}
文档。写入(“
***匹配数***
”;
文件写入(分组1卷长度);
参考
我正在寻找一个理想的正则表达式,它可以一蹴而就。我已经有了一个两步解决方案,但我正在寻找效率,因为每次有人在txtb中键入时,它都会运行