我试图返回方括号之间的所有单词的计数.所以......
[don't match these words] but do match these
Run Code Online (Sandbox Code Playgroud)
我在最后四个单词中得到4分.
这适用于.net:
\b(?<!\[)[\w']+(?!\])\b
Run Code Online (Sandbox Code Playgroud)
但它不适用于Javascript,因为它不支持lookbehind
纯js正则表达式解决方案的任何想法?
好吧,我认为这应该有效:
\[[^\]]+\](?:^|\s)([\w']+)(?!\])\b|(?:^|\s)([\w']+)(?!\])\b
Run Code Online (Sandbox Code Playgroud)
你可以在这里测试一下:http:
//regexpal.com/
如果您需要在主文本后面加上方括号中带有文本的替代方法,则可以将其添加为第二个替代方案,当前的第二个方案将成为第三个替代方案.
这有点复杂,但我现在想不出更好的解决方案.
如果您需要对实际匹配执行某些操作,您将在捕获组中找到它们.
更新:
说明:所以,我们在这里有两个选择:
\[[^\]]+\](?:^|\s)([\w']+)(?!\])\b这是说:
\[[^\]]+\] - 匹配方括号中的所有内容(不捕获)(?:^|\s) - 接下来是线路起点或空格 - 当我看到它时,现在把把它拿出来,因为它没有意义所以这将变成只是 \s([\w']+)- 只要(?!\])下一个字符不是结束括号,就匹配所有后面的单词字符- 现在这可能也是不必要的,所以让我们尝试删除前瞻\b - 并匹配单词边界2 (?:^|\s)([\w']+)(?!\])\b
如果你找不到选项1 - 只做单词匹配,而不是寻找方括号,因为我们确保第一部分它们不在这里.
好的,所以我删除了所有我们不需要的东西(他们留在那里,因为我在它工作之前尝试了很多选项:-)和修改后的正则表达式如下:
\[[^\]]+\]\s([\w']+)(?!\])\b|(?:^|\s)([\w']+)\b
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4111 次 |
| 最近记录: |