Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.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/2/ionic-framework/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
PHP条件正则表达式_Php_Regex_Conditional - Fatal编程技术网

PHP条件正则表达式

PHP条件正则表达式,php,regex,conditional,Php,Regex,Conditional,我不懂有条件正则表达式 使用preg_匹配 我试着去 总是4场比赛 中间有一个可选的破折号 最后有一个可选的int 示例: aaa-bbb-ccc-1 “aaa”应为匹配项[1] “bbb”应为匹配项[2] “ccc”应为匹配项[3] “1”应为匹配项[4] 但是bbb中可以有一个可选的破折号。最后一个也是可选的 Fe “aaa”应为匹配项[1] “bbb bbb”应为匹配项[2] “ccc”应为匹配项[3] “”应该是匹配项[4] 到目前为止我得到了什么: ^(\w+)-(\w+)-(\

我不懂有条件正则表达式

使用preg_匹配

我试着去

  • 总是4场比赛
  • 中间有一个可选的破折号
  • 最后有一个可选的int
示例

aaa-bbb-ccc-1
“aaa”应为匹配项[1]

“bbb”应为匹配项[2]

“ccc”应为匹配项[3]

“1”应为匹配项[4]

但是bbb中可以有一个可选的破折号。最后一个也是可选的

Fe

“aaa”应为匹配项[1]

“bbb bbb”应为匹配项[2]

“ccc”应为匹配项[3]

“”应该是匹配项[4]

到目前为止我得到了什么:

^(\w+)-(\w+)-(\w+)-(\d)$

这只适用于4个组

1-3应为字母、数字、下划线

4应为数字

但是我不知道如何使用条件()

在线测试:

谢谢你的帮助
/Cotton

您可以将此正则表达式与可选的最后一组和第二组中的非贪婪量词一起使用:

^(\w+)-([\w-]+?)-(\w+)(?:-(\d+))?+$

正则表达式详细信息:

  • ^(\w+)-
    :在第一组的开头匹配1个以上的单词字符,后跟
    -
  • ([\w-]+?)-
    :在第二组(惰性)中匹配1+个单词或连字符,后跟
    -
  • (\w+)
    :匹配第三组中的1个以上单词字符
  • (?:-(\d+))+$
    :一个可选组,末尾带有连字符和数字
^(\w+)-([\w-]+?)-(\w+)(?:-(\d+))?+$