Помогите с регулярным выражением / ruby - PullRequest
0 голосов
/ 01 августа 2010

Привет, ребята, поэтому я делаю сценарий для подбора слов / результатов с этого сайта (http://grecni.com/texttwist.php), Итак, у меня уже есть готовый запрос http, и т. Д.

Единственное, что мне сейчас нужно, это извлечь слова, поэтому я работаю с источником HTML, который выглядит так:

<html>
<head>
<title>Text Twist Unscrambler</title>
<META NAME="keywords" CONTENT="Text,Twist,Text Twist,Unscramble,Free,Source,php">
</head>
<body>

<font face="arial,helvetica" size="3">
<p>
<b>3 letter words</b><br>sae &nbsp; sac &nbsp; ess &nbsp; aas &nbsp; ass &nbsp; sea &nbsp; ace &nbsp; sec &nbsp; <p>

<b>4 letter words</b><br>cess &nbsp; secs &nbsp; seas &nbsp; ceca &nbsp; sacs &nbsp; case &nbsp; asea &nbsp; casa &nbsp; aces &nbsp; caca &nbsp; <p>

<b>5 letter words</b><br>cacas &nbsp; casas &nbsp; caeca &nbsp; cases &nbsp; <p>
<b>6 letter words</b><br>access &nbsp; <br><br>
Found 23 words in 0.22962 seconds


<form action="texttwist.php" method="post">

enter scrambled letters and I'll return all word combinations<br>
<input type="text" name="l" value="asceacas" size="20" maxlength="20">

<input type="submit" name="button" value="unscramble">
<input type="button" name="clear" value="clear" onClick="this.form.l.value='';">
</form><p>

<a href=texttwist.phps>php source</a>
- it's kinda ugly, but it's fast<p>

<a href=/>back to my page</a>

</body>

</html>

Я пытаюсь получить такие слова, как "sae", "sav", "secs", "seas", "casas" и т. Д.

Любая помощь?

Это самое дальнее, что я получил, не знаю, что делать отсюда .: текст ссылки

Есть предложения? Помощь

Ответы [ 2 ]

1 голос
/ 01 августа 2010

Используйте HTML-парсер, например Nokogiri .

0 голосов
/ 01 августа 2010

Если вам нужен какой-либо вид надежности, вам действительно нужен парсер, как упоминает Адриан, Nokogiri является наиболее популярным решением.

Если вы настаиваете, осознайте безумие , в котором вы можете оказаться, поскольку страница становится более сложной, может помочь следующее:

Поиск строки, которая соответствует

/^<b>\d+ letter words/

и затем вы можете выкопать биты так:

a = line.split(/<br>/)[1] # the second half
a.gsub!('<p>', '') # take out the trailing <p>
res = a.split(' &nbsp; ')# this is your data

Как говорится, это не то, что вам нужно в рабочем коде. Вы будете удивлены, как изучение парсера изменит то, как вы видите эту проблему.

...