Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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
Php 解释正则表达式_Php_Regex - Fatal编程技术网

Php 解释正则表达式

Php 解释正则表达式,php,regex,Php,Regex,A.上述符号是什么意思 #和/之间有什么不同 我有备忘单,但还没拿到。我所知道的得到了 所有角色,那又怎样?是给你的 上述模式用于PHP预匹配和预替换。 *?是一种所谓的标记,至少与前一个标记匹配零次(并且仅与完成匹配所需的频率相同–它是惰性的,因此为?) (…)创建可在正则表达式或匹配中引用的。它们还用于限制|交替的范围仅限于正则表达式的一部分(就像数学中的括号表明优先级一样) /…/和###是整个正则表达式的分隔符,至少在PHP中是这样。从技术上讲,它们不是正则表达式语法的一部分。您使用什

A.上述符号是什么意思
#和/之间有什么不同

我有备忘单,但还没拿到。我所知道的得到了 所有角色,那又怎样?是给你的

上述模式用于PHP预匹配和预替换。

  • *?
    是一种所谓的标记,至少与前一个标记匹配零次(并且仅与完成匹配所需的频率相同–它是惰性的,因此为
  • (…)
    创建可在正则表达式或匹配中引用的。它们还用于限制
    |
    交替的范围仅限于正则表达式的一部分(就像数学中的括号表明优先级一样)
  • /…/
    ###
    是整个正则表达式的分隔符,至少在PHP中是这样。从技术上讲,它们不是正则表达式语法的一部分。您使用什么分隔符取决于您(但我认为您不能使用
    \
    ),主要是更改您需要在正则表达式中转义的字符。因此,在匹配可能包含大量斜杠的URI时,
    /
    是一个错误的选择。比较下面两个VC++用于查找C++风格的结束注释:

    1. (.*?)
    2. (*)
    3. #regex#
    4. /regex/
    
    后者更容易阅读,因为您不必在正则表达式本身中逃避斜杠
    #
    @
    通常用作分隔符,因为它们很突出,在文本中不太常见,但您可以随意使用

    从技术上讲,您根本不需要这个分隔符。这可能主要是PHP的Perl遗产的残余(在Perl中,正则表达式是分隔的,但不包含在字符串中)。其他使用字符串的语言(因为它们没有本机正则表达式文本),如Java、C#或PowerShell,在没有分隔符的情况下表现良好。在PHP中,您可以在结束分隔符之后添加选项,例如匹配
    a
    a
    (不区分大小写)的
    /a/i
    ,但是正则表达式
    (?i)a
    的作用完全相同,不需要分隔符


下次你花时间通读的时候,这是一本关于正则表达式基础知识和建议主题的很棒的参考书,对很多事情解释得非常好和透彻。另外,请看一下这方面的问题。

好吧,请坚持每个问题一个实际问题。。。问题

这是对问题3+4的回答,因为其他问题都已经回答好了


regexpe通常由/分隔,例如/abc123/或/foo | bar/i。在php中,您可以使用任何您想要的字符。您不限于/,即您可以使用例如#或%、#/usr/local/bin

第二个可能是无效的,或者我应该了解PHP正则表达式和其他风格的正则表达式之间的区别。请以后每个问题坚持一个问题。哦,我不知道@Joey allready已经回答了你所有的问题。我通常尽量不发布不完整的答案;)
preg_match('/\/\/.*$/', $text);
preg_match('#//.*$#', $text);