2012-06-21 21 views

回答

3

你已经掌握了捕获部分之外的量词。您需要移动()内的{2},以便两者都被捕获。

'#<file(.*)source-language="(.{2})"(.*)>#Ui' 
+0

实际上他只是在点后面忘记了一个星号 –

+0

额外的星号和移动捕获组内的量词都起作用,但额外的星号表示“0或更多”,而问题具体表示“恰好2”。星号将允许捕获任何长度。 – kingcoyote

0

用正则表达式解析HTML是一个坏主意。改为尝试Document Object Model

+1

如果您对html的结构充满信心,并且不太担心嵌套标签等,使用正则表达式就可以。它比DOM更快更简单。 –

2
preg_match('#<file(.*)source-language="(..)"(.*)>#Ui', $xliff, $matches); 

我认为这是一个简单的方法,如果你知道这将是正好两个字符。不过,它可能更多,所以要小心。

由于{2}不在捕获范围之内,因此您之前没有捕获两个字符。

相关问题