2016-07-28 87 views
1

对不起,提出这样的问题,但我找不到方法,我一直在这最后2个小时的工作。所以我能够为支架和名称创建模式,它是\\) \\w\\.\\w+","//1,但我无法找到一种方法来为名称编写模式,以及如何从字符串中提取此名称并将其分配给变量。如何提取括号后的第一个“单词”

这里是字符串的例子

"(7:54) (Shotgun) B.Hoyer sacked at JAC 49 for -7 yards (R.Miller). FUMBLES (R.Miller), recovered by HOU-X.Su'a-Filo at JAC 50. X.Su'a-Filo to JAC 42 for 8 yards (T.Alualu; A.Branch)." 

,这里是预期的结果

B.Hoyer 

回答

3

你需要重新摆脱这种即重新添加在需要双斜杠,但会像这项工作?

^\(\d{1,2}:\d{1,2}\)\s\(.*\)\s(.*?)\s.*$ 

它们在(.*?)\s这是任何数目的字符最多空格键捻,懒惰地即匹配组将在第一空间终止。

编辑:见耶的音符下解释^(?:[^)]*\)){2}\s*([\w.]+)实质上更有效......

+0

它的作品!谢谢! – AlienDeg

+1

尽管这样做有效,但它比所需的更复杂(并涉及更多的回溯)。 '^(?:[^)] * \)){2} \ s *([\ w。] +)'是13个步骤匹配。 '^ \(\ d {1,2}:\ d {1,2} \)\ s \(。* \)\ s(。*?)\ s。* $'对于相同的匹配超过200步。 – dawg

+0

注意和编辑 - 谢谢! :-) – saml

1

你可以这样做:

^(?:[^)]*\)){2}\s*([\w.]+) 

Demo

相关问题