Javascript 正则表达式用于所有不在特定字符之间的单词
Javascript Regex for all words not between certain characters
我正在尝试返回不在方括号内的所有单词的计数。所以给定..
[don't match these words] but do match these
最后四个字我数到 4
。这适用于 .net:
'b(?<!'[)['w']+(?!'])'b
但它在 Javascript 中不起作用,因为它不支持回溯
关于纯 js 正则表达式解决方案的任何想法?
,我认为这应该有效:
'[[^']]+'](?:^|'s)(['w']+)(?!'])'b|(?:^|'s)(['w']+)(?!'])'b
您可以在此处进行测试:
http://regexpal.com/
在正文之后加上方括号中的案文,则可以将其添加为第二个备选案文,而当前的第二个备选案文将成为第三个备选案文。
这有点复杂,但我现在想不出更好的解决方案。
如果您需要对实际匹配项执行某些操作,则可以在捕获组中找到它们。
更新:
解释:因此,我们这里有两个选择:
-
'[[^']]+'](?:^|'s)(['w']+)(?!'])'b
这是在说:
-
'[[^']]+']
- 匹配方括号中的所有内容(不捕获( -
(?:^|'s)
- 后跟行开始或空格 - 当我现在查看它时,请取出插入符号,因为它没有意义,所以这将变得's
-
(['w']+)
- 匹配所有后续单词字符,只要(?!'])
下一个字符不是右括号 - 好吧,现在这可能也是不必要的,所以让我们尝试删除前瞻 -
'b
- 和匹配词边界
2 (?:^|'s)(['w']+)(?!'])'b
如果您找不到选项 1 - 只进行单词匹配,而不寻找方括号,因为我们在第一部分确保它们不在这里。
好的,所以我删除了所有我们不需要的东西(他们留在那里,因为我在它起作用之前尝试了很多选项:-(修订后的正则表达式如下:
'[[^']]+']'s(['w']+)(?!'])'b|(?:^|'s)(['w']+)'b
我会使用 '[[^']]*']
之类的东西来删除方括号之间的单词,然后用空格分解返回的字符串以计算剩余的单词。
Chris,复活这个问题,因为它有一个简单的解决方案,没有提到。(在对如何在正则表达式中排除模式的一般问题进行一些研究时发现了您的问题。
这是我们的简单正则表达式(在 regex101 上查看它的工作,查看右下面板中的组捕获(:
'[[^']]*']|('b'w+'b)
交替的左侧匹配完全[bracketed groups]
。我们将忽略这些匹配。右侧匹配并捕获组 1 的单词,我们知道它们是正确的单词,因为它们与左侧的表达式不匹配。
该程序展示了如何使用正则表达式(请参阅在线演示中的计数结果(:
<script>
var subject = '[match ye not these words] but do match these';
var regex = /'[[^']]*']|('b'w+'b)/g;
var group1Caps = [];
var match = regex.exec(subject);
// put Group 1 captures in an array
while (match != null) {
if( match[1] != null ) group1Caps.push(match[1]);
match = regex.exec(subject);
}
document.write("<br>*** Number of Matches ***<br>");
document.write(group1Caps.length);
</script>
参考
如何匹配(或替换(模式,除非在 s1、s2、s3 的情况下...
- 如何在jQuery中搜索两个字符之间的字符串
- 使用 JavaScript 中的正则表达式替换大文本中两个字符之间的每个出现的字符串
- Javascript-使用Regex获取两个字符之间的字符
- 如何获取特定字符之间的值
- 通过JQuery在网页上的两个字符之间放置空格
- 如果两个波浪号字符之间的字符计数大于60,则在两个波浪字字符之间添加波浪号
- 删除Javascript中特定字符之间的所有内容
- 如何在字符之间进行匹配,但不将它们包含在结果中
- javascript:如何使用regex删除两个特殊字符之间的逗号(,)
- 如何提取两个字符之间的字符串
- 空格上的正则表达式匹配 - 排除多组字符之间的空格
- 使用正则表达式捕获 2 个特殊字符之间的文本
- 如何在 javascript 中替换两个声明字符之间的字符串
- 正则表达式获取两个字符之间的所有内容
- Javascript - 检测字符串中的某些字符并替换这些字符之间的内容
- Reg ex 表示特定字符之后和其他字符之间的任何内容
- 替换/删除两个字符之间的所有内容
- 确定字符之间的距离
- 如何在 JavaScript 中替换字符串中最后一个出现的两个字符之间的字符
- 如何确定位置是否位于特定字符之间