【问题标题】:Do different languages process regular expression differently?不同的语言处理正则表达式的方式不同吗?
【发布时间】:2014-06-04 15:35:01
【问题描述】:

以下正则表达式在 Python 中有效,如图所示:

>>> pattern = "[a-z]"
>>> re.findall(pattern,"a")
['a']

然而,在 Javascript 中,等效代码不会产生结果:

pattern = /'[a-z]'/
pattern.test('a')
false

这怎么可能?这是完全相同的正则表达式代码,这让我相信语言处理它的方式存在一些差异。是这样吗?

【问题讨论】:

  • 可能是因为 Javascript 不需要双引号。
  • 不。还是不行。
  • 模式中根本没有引号!!在 javascript 中,只需要斜线来分隔模式。

标签: javascript python regex


【解决方案1】:

您的模式中有文字引号。您的模式将匹配 "'a'" 但不匹配 "a"

所以不要写

pattern = /'[a-z]'/  

宁可

pattern = /[a-z]/

pattern = new RegExp("[a-z]") 

如果您不希望 pattern 是全局的,请在分配中使用 var pattern

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    • 2021-01-31
    • 2020-09-12
    • 2011-04-19
    • 2012-06-23
    • 1970-01-01
    相关资源
    最近更新 更多