|
|
|
| Подскажите как составить регулярное выражение, чтобы вытащить из кода последние три слова:
[CODE]
<h3>Past tense</h3>
<table border=1>
<tr>
<th align=left>Masculine</th>
<th align=left>Feminine</th>
<th align=left>Neutral</th>
<th align=left>Plural</th>
</tr>
<tr>
<td align=left>бе'гал</td>
<td align=left>бе'гала</td>
<td align=left>бе'гало</td>
<td align=left>бе'гали</td>
</tr>
</table>
[/CODE]
Вот чтобы вытащить слова бе'гал,бе'гала, бе'гало. | |
|
|
|
|
|
|
|
для: dump
(27.04.2010 в 15:56)
| | Вы должны понять, что регулярные выражения это не какой-то интеллектуальный механизм, который поймет какие вам нужны последние три слова, а тупой автомат которому надо чётко прописать алгоритм действия при поиске нужного совпадения. В вашем примере последние три слова это . Сформулируйте задачу более строго. Может появиться и решение вашей задачи. | |
|
|
|
|
|
|
|
для: dump
(27.04.2010 в 15:56)
| | регексп красотой не отличается, но тем не менее у меня работает.
use v5.10;
$text = "one two three five six";
say join " | ", $1, $2, $3 if ($text =~ /\s*(\w+)\s*\s*(\w+)\s*\s*(\w+)\s*$/);
|
написано на Perl и ниибет!
--------------------
да, для Ваших запросов добавьте хтмл-теги <td.....>.....</td> вокруг этого ужаса :) | |
|
|
|
|
|
|
|
для: dump
(27.04.2010 в 15:56)
| | логика простая, тут у тебя эти три слова в конце таблицы, значит надо исходить из конца строки ... а в конце у нас ... </td></tr></table>
регекс будет такой,
preg_match("#<td.*?>(.*?)<\/td>\s*?<td.*?>(.*?)<\/td>\s*?<td.*?>(.*?)</td>\s*?</tr>\s*?</table>#is", $text, $array_data
// все что в последних трех <td> ..... </td> будет храниться в этих трех переменных
$array_data[1]; // = бе'гала
$array_data[2]; // = бе'гало
$array_data[3]; // = бе'гали
|
| |
|
|
|