PHP中的复杂正则表达式

时间:2011-11-24 04:17:54

标签: php regex

我有四种类型的字符串,如下所示。区别在于,(23)(15)这两个数字可能存在于字符串中,或​​者不存在。

(23) Abc 11 (15) Krtss 14 (25:05 IN 2ND)
Abc 11 (15) Krtss 14 (25:05 IN 2ND)
(23) Abc 11 Krtss 14 (25:05 IN 2ND)
Abc 11 Krtss 14 (25:05 IN 2ND)

文字AbcKrtss可以是任意两个名字。这些名称甚至可能包含空格或连字符。

我需要:

  1. 从所有4个字符串中提取“Abc”的单个正则表达式。
  2. 从所有4个字符串中提取“Krtss”的第二个正则表达式。
  3. 此处AbcKrtss是两个名称,也可能包含空格和连字符。

    如果无法使用单个正则表达式,请给我一个小的PHP代码片段以获得所需的输出。

1 个答案:

答案 0 :(得分:2)

如果您想要的只是获得这两个名称的简单答案,那么请执行以下操作:

/.+?(\w[\w\s-]*) \d+.*? ([\w\s-]+) \d+ \(/

请注意,对于名字我强制以字母开头,以避免在第一个带括号的数字之后意外占用空格(如果存在)。如果这不是问题,你可以使parens中的正则表达式的第一部分与第二部分相同。