2009-09-24 7 views
1

ok У меня есть файл, который может быть или не быть подстроенным или не подвешенным. честно говоря, мне нужно игнорировать это. Мне нужно найти документ, чтобы найти все теги < и соответствующие теги и удалить все внутри них. Я пытался получить эту работу для немного моего текущего регулярного выражения:Regex with < and >

private Regex BracketBlockRegex = new Regex("<.*>", RegexOptions.Singleline); 
.... 
resultstring = BracketBlockRegex.Replace(filecontents, ""); 

, но это, кажется, не работает, потому что он ловит WAY много. любые подсказки? есть что-то странное с < и> символами в C#?

ответ

4

Попробуйте нежадным вариант вашего регулярного выражения:

<[^>]*> 

Что у вас есть, <.*>, будут соответствовать первой < следует все до последнего >, в то время как то, что вы хотите, чтобы соответствовать к первым один.

+0

bingo! это заставило его работать – 2009-09-24 22:22:10

1

Try:

private Regex BracketBlockRegex = new Regex("<.*?>", RegexOptions.Singleline); 
2

Регулярные выражения жадные, и у вас есть период, равный НИЧЕГО, который именно так включает в себя большее, чем и меньше, чем персонажей.

Попробуйте это ...

<[^<>]*> 

Arguably the best Regular Expression resource on the Internet.

+0

nope. это не работает. нужно помнить, что мне нужно учитывать символы новой строки и линейные фиды, как возможно включительно для матча. – 2009-09-24 22:23:09

+0

@Arthur: Он включает в себя возврат каретки и линейные каналы. Вы имели в виду эксклюзив? Если это так, тогда вам нужно будет <[^<> \ r \ n] *> – MyItchyChin

0

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

HTML-тег можно разделить на белом фоне на разные строки.

< IMG
SRC = "blah.jpg"
ALT = "бла"
>

Некоторые регулярные выражения парсеры могут, или не может, матч . до \ r или \ n в зависимости от настроек.