2011-11-24 105 views
-1

我有四种类型的字符串,如下所示。不同之处在于两个数字(23)(15)可能在字符串中或不在那里。PHP中的复杂正则表达式

(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”。

这里AbcKrtss是两个名字,也可能包含空格和连字符。

如果一个正则表达式是不可能的,请给我一个小的PHP代码片段来获得所需的输出。

+0

我建议http://www.rubular.com/用于与正则表达式一起玩,并在键入时查看结果。 – deceze

+0

@deceze - 你如何看待[Regex Coach](http://weitz.de/regex-coach/)? –

+0

@Jared“...是*** Windows ***的图形应用程序...”对不起,没有太多。 ; o)至少把人们简单地联系起来并不那么容易。 :) – deceze

回答

2

如果你想要的是一个简单的答案来获得这两个名字,然后做到这一点:

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

注意,第一个名字,我执行,它以字母开头,以避免在第一个加括号的数字后意外地占用了空间,如果它存在的话。如果这不是问题,那么可以使parens中的正则表达式的第一部分与第二部分相同。

+0

谢谢。有用。这两个名字都以字母开头。我唯一需要做的就是在所有字符串的开始处连接一个空格,以便在所有情况下都能够正常工作,而不必删除第一个字母。 – user1058797