PHP正则表达式匹配多个片段

PHP正则表达式匹配多个片段,php,regex,Php,Regex,我不熟悉正则表达式,我知道如何从给定字符串中提取一个子字符串的基本知识,但我正在努力提取我需要的多个部分。我想知道是否有人可以帮助我这个简单的例子,然后我从那里工作的方式。以这个字符串为例: LMJ获胜NeuZone-KEN#55 LEIGH vs LMJ#63 ONEIL 斜体部分是字符串中会更改的部分,粗体部分在每个字符串中保持不变。我需要的零件是: 第一个团队id,在本例中是LMJ,它总是以字符串开头,并且是3个大写字母,^[A-Z]{3} Neu部件可以是三个字符串之一,Neu,Off,

我不熟悉正则表达式,我知道如何从给定字符串中提取一个子字符串的基本知识,但我正在努力提取我需要的多个部分。我想知道是否有人可以帮助我这个简单的例子,然后我从那里工作的方式。以这个字符串为例:

LMJ获胜NeuZone-KEN#55 LEIGH vs LMJ#63 ONEIL

斜体部分是字符串中会更改的部分,粗体部分在每个字符串中保持不变。我需要的零件是:

  • 第一个团队id,在本例中是
    LMJ
    ,它总是以字符串开头,并且是3个大写字母,
    ^[A-Z]{3}

  • Neu部件可以是三个字符串之一,
    Neu
    Off
    Def
    [Neu | Off | Def]

  • 第二个团队成员总是在单词
    区域-
    [A-Z]{3}
    之后出现

  • 需要字符串第一个
    #
    后的数字部分。这可能是1或2位
    [0-9]{1,2}

  • 5.第三组零件与3相同,但将出现在
    vs
    [A-Z]{3}
    之后

  • 与4相同,在第二个
    #
    [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。在我尝试过的几个例子上做得很好。我们将尝试使用这个示例来创建更多的正则表达式字符串。