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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.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
Regex 如何理解正则表达式模式?_Regex - Fatal编程技术网

Regex 如何理解正则表达式模式?

Regex 如何理解正则表达式模式?,regex,Regex,我需要理解这样一种模式:^9(ab | cd | ef?$ 我有一些字符串传递和不传递此模式的示例:  9 - NO  9cd - YES  9e - YES  9acef - NO 我不知道为什么第三个例子被接受而第四个不被接受。 我看到这样的模式:9然后a然后(b或c)然后(d或e)然后f(零次或一次)。但我认为我的理解是错误的。有人能告诉我怎么看吗 我看到这样的模式:9,然后a,然后(b或c),然后(d或e),然后f(0或1次) 错。它实际上就像9然后ab或cd或ef或e和线边界

我需要理解这样一种模式:
^9(ab | cd | ef?$

我有一些字符串传递和不传递此模式的示例:

 9 - NO
 9cd - YES
 9e - YES
 9acef - NO
我不知道为什么第三个例子被接受而第四个不被接受。 我看到这样的模式:
9
然后
a
然后(
b或c
)然后(
d或e
)然后
f
(零次或一次)。但我认为我的理解是错误的。有人能告诉我怎么看吗

我看到这样的模式:9,然后a,然后(b或c),然后(d或e),然后f(0或1次)

错。它实际上就像9然后
ab
cd
ef
e
和线边界的末端。所以这个正则表达式将匹配
9e
,但不匹配
9acef
。9之后允许的最大和最小字符为2(ab、cd、ef)或1(e) ,即不超过2
此处会将上一个标记变为可选,
ef?
匹配
ef
e

我看到这样的模式:9,然后a,然后(b或c),然后(d或e),然后f(0或1次)

错。它实际上就像9然后
ab
cd
ef
e
和线边界的末端。所以这个正则表达式将匹配
9e
,但不匹配
9acef
。9之后允许的最大和最小字符为2(ab、cd、ef)或1(e) ,即不超过2
此处将上一个标记变为可选,
ef?
匹配管道的
ef
e

表示或<代码>(ab | cd | ef?表示ab或cd或e后跟f。必须存在一个备选方案,但不能存在多个备选方案

^和$是指示输入的开始和结束位置的锚。$anchor表示输入的结尾必须紧跟与
(ab | cd | ef?
匹配的内容

  • 9:没有其他选择,这不匹配

  • 9cd:存在cd替代品,因此此项匹配

  • 9e:存在更多fs备选方案的e和0,这匹配

  • 9acef:存在两个备选方案,输入的结束时间在ef之后;由于正则表达式指定输入的结尾必须恰好位于一个备选项之后,并且出现两个备选项,因此这不匹配

    • 管道意味着或<代码>(ab | cd | ef?表示ab或cd或e后跟f。必须存在一个备选方案,但不能存在多个备选方案

      ^和$是指示输入的开始和结束位置的锚。$anchor表示输入的结尾必须紧跟与
      (ab | cd | ef?
      匹配的内容

      • 9:没有其他选择,这不匹配

      • 9cd:存在cd替代品,因此此项匹配

      • 9e:存在更多fs备选方案的e和0,这匹配

      • 9acef:存在两个备选方案,输入的结束时间在ef之后;由于正则表达式指定输入的结尾必须恰好位于一个备选项之后,并且出现两个备选项,因此这不匹配

      ^9(ab | cd | ef?$
      翻译为:

      9
      ,后跟
      ab
      cd
      ef
      e

      符合您期望的模式是:

      9a(b | c)(d | e)f?$
      ^9(ab | cd | ef?$
      翻译为:

      9
      ,后跟
      ab
      cd
      ef
      e

      符合您期望的模式是:

      9a(b | c)(d | e)f?$
      9(ab | cd | ef?
      表示:9后接abcdefe(因为f是可选的,由
      引起?

      ^
      $
      分别标记字符串的开头和结尾

      提示:许多正则表达式测试人员(例如)提供鼠标上方键入正则表达式的解释。

      9(ab|cd|ef?
      表示:9后接abcdefe(因为f是可选的,由
      引起?

      ^
      $
      分别标记字符串的开头和结尾


      提示:许多正则表达式测试人员(例如)提供鼠标上方键入正则表达式的解释。

      您将
      )混淆,然后将
      )。您描述的将是
      9a(b | c)(d | e)f
      这样的网站对这类事情很有帮助,因为它可以分解你的正则表达式并显示哪些部分匹配/不匹配是的,就是这样,谢谢你这里有一个指向正则表达式的链接,你把
      |
      )混淆了
      (串联)。你描述的是
      9a(b | c)(d | e)f
      像这样的网站对这类事情很有帮助,因为它可以分解你的正则表达式,并显示哪些部分匹配/不匹配是的,就是这样,谢谢这里有一个指向正则表达式的链接,在regex101上好的,所以一个替代符号包括符号块。谢谢好的,所以替代符号包括符号块。谢谢