【问题标题】:What does the "[^]" regex pattern mean (javascript regex)? [duplicate]“[^]”正则表达式模式是什么意思(javascript 正则表达式)? [复制]
【发布时间】:2015-07-21 16:40:25
【问题描述】:

在尝试在 Python 程序中使用一些 Javascript 正则表达式模式时,我遇到了一个奇怪的 [^] 模式(像 "<[^]+(?:id=\"block[_-]commerce[_-]cart[_-]cart|class=\"commerce[_-]product[_-]field)" 这样的较长模式的一部分)。

这种模式是什么意思?为什么要否定一个空字符类?!

【问题讨论】:

  • 一个否定或补充字符集。也就是说,它匹配任何未包含在括号中的内容。您可以使用连字符指定字符范围。在正常字符集中工作的所有东西也在这里工作。例如,[^abc] 与 [^a-c] 相同。它们最初匹配“brisket”中的“r”和“chop”中的“h”。检查这个.. developer.mozilla.org/en/docs/Web/JavaScript/Guide/…
  • [^] in JS 将匹配任何字符,包括换行符。

标签: javascript python regex


【解决方案1】:

在 JavaScript 中,[^] 表示 any character

但是,建议您改用[\s\S]

看看regex101.com demo

Python,它会抛出异常([^ Incomplete character class),你最好使用.re.DOTALL(或re.S)标志,或[\s\S]字符类。

【讨论】:

  • However, it is deprecated 谁说它已被弃用?它在规格中。
  • @nhahtdh:对不起,我想我是从 regex101 上的以下消息中假设的:Note: Avoid this construct, use . or [\s\S] instead. 我更新了文本。
  • 我想建议使用[\s\S] 来提高可读性和可移植性,这是一个值得关注的问题,因为[^][] 是仅限JavaScript 的构造,并且会让任何使用不玩正则表达式。
  • @nhahtdh:我也这么认为,现在正则表达式的可移植性似乎是一种增长趋势(这样的问题开始越来越频繁地出现)。
猜你喜欢
  • 2011-06-15
  • 1970-01-01
  • 2012-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-21
  • 2014-09-02
  • 2016-06-10
相关资源
最近更新 更多