Получение содержимого между тегами td с помощью регулярного выражения - PullRequest
1 голос
/ 20 марта 2012

Вот пример данных

<table class="sparql" border="1"> 
<tr> <th>abstract</th></tr> 
<tr> 
  <td>
    Cologne is Germany&#39;s fourth-largest city, and is the 
    largest city both in 
    the German Federal State of North Rhine-Westphalia and within the 
    Rhine-Ruhr Metropolitan Area, one of the major European metropolitan
    areas with more than ten million inhabitants."@en
 </td> 
 </tr> 
</table>

, и я пытаюсь получить содержимое между тегами <td> с помощью регулярных выражений.Я пробовал что-то вроде

<td>.*</td>

Но как сбросить tags itselef?

1 Ответ

2 голосов
/ 20 марта 2012

Как указывает @MisterJack, вам нужно использовать подвыражения, чтобы иметь возможность ссылаться на совпадение.Если вы используете REReplace(), то вы можете использовать \1 (или \2 и т. Д.) В качестве обратной ссылки на совпадение.Если вы используете REFind(), то вы захотите использовать его с returnsubexpressions=true, и он возвратит массивы struct с len и pos для соответствующих значений.Я бы сделал это:

<!--- I use "?" below because we want to be lazy rather than greedy --->
<cfset the_match = REFind(the_content, "<td>(.*?)</td>", 1, true) />

<cfdump var="#the_match#" />

Вы должны увидеть структуру с массивами len и pos.В каждом массиве может быть только один элемент.Чтобы получить содержимое матча, вы можете сделать:

<cfset match_content = mid(the_content, pos[i], len[i]) />

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...