Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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
是否使用方括号表示regexp点_Regex - Fatal编程技术网

是否使用方括号表示regexp点

是否使用方括号表示regexp点,regex,Regex,*和[.]*之间的确切区别是什么 我试着把这些放在括号里,作为后面的参考,结果是不一样的,尽管我不明白为什么 应该匹配任何单个字符 所以我猜它是否在方括号内,对于*(匹配零或更多)运算符不应该很重要。但事实确实如此。为什么?在*中,点是一种特殊字符,它与除换行符以外的任何字符相匹配(如果指定了点所有修饰符,它将与所有字符相匹配)。在字符类([.])中,点失去其特殊含义,并开始匹配文字点 它是所有正则表达式口味的通用行为。 匹配除换行符以外的任何字符 \。仅匹配文本“ [.]相当于[\.]或\.这

*
[.]*
之间的确切区别是什么

我试着把这些放在括号里,作为后面的参考,结果是不一样的,尽管我不明白为什么

应该匹配任何单个字符


所以我猜它是否在方括号内,对于
*
(匹配零或更多)运算符不应该很重要。但事实确实如此。为什么?

*
中,点是一种特殊字符,它与除换行符以外的任何字符相匹配(如果指定了点所有修饰符,它将与所有字符相匹配)。在字符类(
[.]
)中,点失去其特殊含义,并开始匹配文字点

它是所有正则表达式口味的通用行为。

  • 匹配除换行符以外的任何字符
  • \。
    仅匹配文本
  • [.]
    相当于
    [\.]
    \.
    这只是为了方便起见-因为您几乎肯定不希望它与字符组上下文中的“任何字符”匹配
奖金——如果您使用,您可以很容易地尝试以下内容:

/./.examples # => ["a", "b", "c", "d", "e"]
/\./.examples # => ["."]
/[.]/.examples # => ["."]

将RE插入将解释发生了什么。那么如何指定:任意(
)字符数或空格(
\s
)字符数?e、 g.
1([.\s]*)2
捕获多行正则表达式中1和2之间的组?@user14492匹配
1
2
之间的任何0个或更多点或空格。如果要匹配
1
2
之间的任何文本,需要参考并使用
(?s)1(.*)2
/
(?s)1(.*)2
1([\w\w]*)2
/
1([\w\w]*)2
。可能还有其他选项,比如JavaScript中的
1([^]*)2
/
1([^]*)2
;这是我脑海中的一个例子。我还想知道任意数量的following all(
)和特定字符(
\t
)的正确形式是什么。因为当你把点(
)放在一个拾取组(方括号)中时,例如,
[.\t]+
,它的意思不一样吗?因为目前我必须用
[\t.]+=[\ta-zA-Z0-9]
替换方括号中的所有点?@user14492匹配任何字符+特定字符=匹配任何字符。不适用于像
\n\r\t\s这样的空白字符?