Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 正斜杠的正则表达式含义/_Python_Regex - Fatal编程技术网

Python 正斜杠的正则表达式含义/

Python 正斜杠的正则表达式含义/,python,regex,Python,Regex,我刚刚开始学习python中的正则表达式模块,我被要求解释一个有趣的正则表达式序列 /^[a-z0-9_-]{3,16}$/ 我可以解释两个正斜杠中的代码,它们搜索的用户名是字母数字,包括连字符和下划线,并且至少有3个,最多16个数字或字符 现在我的问题是,这两个前斜杠是什么意思?我在网上试过,似乎大多数教程都解释了倒斜杠,但没有正斜杠。请告知。谢谢。斜线代表正则表达式的开始和结束。这是Perl表达正则表达式的典型方式: /<my_regex_here>/ // 在Perl中,

我刚刚开始学习python中的正则表达式模块,我被要求解释一个有趣的正则表达式序列

/^[a-z0-9_-]{3,16}$/
我可以解释两个正斜杠中的代码,它们搜索的用户名是字母数字,包括连字符和下划线,并且至少有3个,最多16个数字或字符


现在我的问题是,这两个前斜杠是什么意思?我在网上试过,似乎大多数教程都解释了倒斜杠,但没有正斜杠。请告知。谢谢。

斜线代表正则表达式的开始和结束。这是Perl表达正则表达式的典型方式:

/<my_regex_here>/
//
在Perl中,您可以指定各种选项,例如:

s/<my_regex>/<replaceWith>/
s///

Perl当然是一种专门为正则表达式设计的语言,因此人们经常使用类似Perl的语法谈论正则表达式。

正斜杠只是一个分隔符,用于分隔正则表达式的开始和结束。它是正斜杠而不是其他字符的原因主要是惯例

例如,您可以在vim中定义一个正则表达式,如下所示,用问号代替传统的斜杠:

:s?[a-z0-9_-]g


正斜杠用作分隔符。它们只在某些风格中使用(例如Perl和JavaScript),如果您选择,通常可以更改为分隔符。更改分隔符将更改需要转义的内容(如果有)

关于另一个问题,请参见我今天早些时候写的带有正则表达式的sed声明:

sed-E的/OldUtility.getList([^]*)\)([\)]*)/\1\2.getList()/g'

在这种情况下:

  • s
    替换
  • /
    第一个斜杠
  • 正则表达式。如果正则表达式需要一个
    /
    ,则需要对其进行转义。如果您有足够的
    /
    需要转义,如果可能,最好切换到其他分隔符
  • /
    第二个斜杠
  • 然后是替换:
    \1\2.getList()
  • /
    第三个也是最后一个斜杠
  • 最后,还有一个修饰符:
    g
    for global

它是某些语言(如JavaScript)中regexp本身的分隔符。只有一些标志,如g、m、i、u或y可以跟在这些斜杠分隔的表达式后面。/在Python中没有任何意义,除了它匹配一个
/
字符;其他一些语言使用它作为分隔符。^我们不应该回答这些问题,而是标记它们…@Omarjmh标记的原因是什么?Bc是aduplicate@Omarjmh傻瓜在哪里?质量决定了关闭哪个版本。您链接到的问题是特定于JS的。如果你读了我的答案或其他答案,这是一个一般性的问题,因为这种行为在许多口味之间是共享的。“我认为这不是一个足够近的骗局。”奥马尔,谢谢。我认为这个问题至少对未来的人有点用处,不像我看到的(有时也会回答的)许多“我可以用haz正则表达式”的问题。