2010-03-03 5 views
0

My Value 1C# Regex разбор HTML

Мне нужно «Мое значение 1» Пожалуйста, помогите мне. C# язык

+0

Что вы сделали до сих пор? –

+0

будут теги всегда в одном формате (например, 3 слоя глубокими с tr, td и шрифтом) – chillysapien

+0

Да, тот же формат – Chicharito

ответ

2

языка C#

string input = "<tr><TD><FONT size=\"2\">My Value 1</FONT></TD></tr>"; 
string pattern = @"<[^>]*?>"; 
string output = Regex.Replace(input, pattern, ""); //My Value 1 

Просто удалить все HTML-теги.

+0

его работа спасибо – Chicharito

+0

добро пожаловать. – ldp615

0

Try:

/<tr>\s*<td>\s*<font.*?>(.*?)<\/font>\s*<\/td>\s*<\/tr>/i 

Используется в PHP:

<?php 

if(preg_match('/<tr>\s*<td>\s*<font.*?>(.*?)<\/font>\s*<\/td>\s*<\/tr>/i', 
       '<tr><TD><FONT size="2">My Value 1</FONT></TD></tr>',$matches)) 
     echo $matches[1]; // prints My Value 1 
?> 
+0

Dont Work codaddict – Chicharito

+0

@oraclee, как это не работает? Что он возвращается? – Lazarus

+0

@Lazarus return null – Chicharito

0
function stripTags(markup){ 
    return markup.replace(/\s*<[^>]*?>\s*/gim,''); 
} 

Это предполагает все, что вы действительно хотите это внутренний текст представлен "My Value 1" выше.

3

Вы не можете правильно разобрать HTML с регулярными выражениями, поскольку регулярные выражения не могут обрабатывать вложенность, разрешенную HTML. Сделать это правильно. Для этой одной строки, которую вы показываете, вы можете использовать регулярное выражение, но вы не можете рассчитывать на то, что эта строка остается идентичной, поэтому для выполнения задачи обычно необходимо использовать SAX/DOM.

+1

Но вы можете анализировать фиксированную строку, которая, как представляется, является HTML с регулярными выражениями.Хотя есть много проблем с этим, они проблемы, которых, вероятно, нет у OP. – Tom

+2

@ Тома - согласился. Но хотя у ОП нет их сегодня, он может завтра и не останется удивленным, что произошло, надеюсь. – msw

7

Как HTML-код очень «непредсказуем», я бы рекомендовал использовать набор для разбора HTML. Какой язык программирования вы используете? В .NET я использовал HTML Agility Pack с большим успехом. В Java HTML Parse r может быть удобно (хотя я еще не работал с ним).

0

если вы используете PHP, разделить на </FONT>

$string='<tr><TD><FONT size="2">My Value 1</FONT></TD></tr>'; 
$s = explode('</FONT>',$string); 
foreach ($s as $v){ 
    if (strpos($v,"<FONT") !==FALSE) { 
     $t = explode(">",$v); 
     print end($t)."\n"; 
    } 

} 

выход

$ php test.php 
My Value 1 
+0

Мне нужен C# язык :-) – Chicharito

0

в Perl Я хотел бы использовать

my $string='<tr><TD><FONT size="2">My Value 1</FONT></TD></tr>'; 
$string =~ m/(<.*?>)*([^<]*)(<.*?>)*/; 
print $2; 

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

(<.*?>)*([^<]*) 

будет работать, а

0

Если вы хотите, чтобы получить содержимое внутри тегов я думаю следующее Regexp достаточно:

^<.*>([^<>]+)<.*>$ 

Это будет работают только в том случае, если где-то есть какие-либо данные между тегами, иначе это даст отсутствие соответствия.

+0

Мне нужно только значение «Моя ценность 1» – Chicharito