我有这些字符串,例如:
download-google-chrome-free
download-mozilla-firefox-free
还有这些字符串:
google-chrome
mozilla-firefox
我的前缀是download-
,我的后缀是-free
,我需要一个正则表达式来捕获单词google-chrome
,如果输入字符串没有download-
和-free
前缀和后缀,则捕获的组就是字符串本身。
字符串1=下载谷歌chrome免费(带前缀和sufix(
String 1 Group 1 = download-
String 1 Group 2 = google-chrome
String 1 Group 3 = -free
字符串2=谷歌铬(无前缀和sufix(
String 2 Group 1 = '' (empty)
String 2 Group 2 = google-chrome (empty)
String 2 Group 3 = '' (empty)
你能做到吗?我正在使用PHP
和preg_match
。
preg_match('/(download-)?(google-chrome|mozilla-firefox)(-free)?/', $string, $match);
?
表示之前的组是可选的。如果前缀或后缀不在字符串中,那么这些捕获组在$match
中将为空。
如果您实际上不想返回带有可选前缀和后缀的组,请将?:
放在组的开头,使其成为非捕获组:
preg_match('/(?:download-)?(google-chrome|mozilla-firefox)(?:-free)?/', $string, $match);
现在$match[1]
将包含您想要的浏览器名称。