PHP正则表达式匹配多个片段
我不熟悉正则表达式,我知道如何从给定字符串中提取一个子字符串的基本知识,但我正在努力提取我需要的多个部分。我想知道是否有人可以帮助我这个简单的例子,然后我从那里工作的方式。以这个字符串为例: LMJ获胜NeuZone-KEN#55 LEIGH vs LMJ#63 ONEIL 斜体部分是字符串中会更改的部分,粗体部分在每个字符串中保持不变。我需要的零件是:PHP正则表达式匹配多个片段,php,regex,Php,Regex,我不熟悉正则表达式,我知道如何从给定字符串中提取一个子字符串的基本知识,但我正在努力提取我需要的多个部分。我想知道是否有人可以帮助我这个简单的例子,然后我从那里工作的方式。以这个字符串为例: LMJ获胜NeuZone-KEN#55 LEIGH vs LMJ#63 ONEIL 斜体部分是字符串中会更改的部分,粗体部分在每个字符串中保持不变。我需要的零件是: 第一个团队id,在本例中是LMJ,它总是以字符串开头,并且是3个大写字母,^[A-Z]{3} Neu部件可以是三个字符串之一,Neu,Off,
LMJ
,它总是以字符串开头,并且是3个大写字母,^[A-Z]{3}
Neu
,Off
,Def
,[Neu | Off | Def]
区域-
,[A-Z]{3}
之后出现#
后的数字部分。这可能是1或2位[0-9]{1,2}
vs
,[A-Z]{3}
之后
#
,[0-9]{1,2}
之后需要数字部分我想把所有这些放在一个正则表达式中,这是可能的吗?方括号内的所有内容都是所谓的字符类:它只匹配一个字符。因此,
[Neu | Off | Def]
的意思是:N
、e
、u
、O
、f
或D
(重复被忽略)
您需要的是捕获组:(Neu | Off | Def)
综合起来:
^([A-Z]{3})赢得(Neu | Off | Def)\。区域-([A-Z]{3})#([0-9]{1,2})[A-Z]+vs([A-Z]{3})#([0-9]{1,2})[A-Z]+$
(假设您对“LEIGH”和“ONEIL”部分不感兴趣,并且它们总是大写)正则表达式应该是这样的
'/([A-Z]{3})\ won\ (Neu|Off|Def)\.\ Zone\ -\ ([A-Z]{3})\ (\#[0-9]{1,2}\ \w+)\ vs\ ([A-Z]{3})\ (\#[0-9]{1,2}\ \w+)/'
()用于捕获不同的部分
这项测试不正确。谢谢Roel。在我尝试过的几个例子上做得很好。我们将尝试使用这个示例来创建更多的正则表达式字符串。