Как использовать regexp для удаления только некоторых тэгов html? [Дубликат]

ndk. abiFilters означает, что в окончательный APK будут включены только выбранные архитектуры процессоров родных библиотек.

С другой стороны, splits. abi. enable true ] сообщает компилятору сгенерировать отдельные APK для выбранных архитектур.

Это означает, что эти две конфигурации нельзя установить вместе. Таким образом, у вас есть два варианта:

  1. Отключить разделение APK (вы уже это выяснили). Тогда у вас будет один APK.
  2. Удалите настройку ndk. abiFilters. Чем у вас будет несколько (вероятно, намного меньше) APK. Более того, с universalApk true будет создан универсальный APK со всеми архитектурами (вероятно, намного больше, чем в варианте 1).

Затем замените compile новым ключевым словом implementation. Я думаю, это ясно из сообщения об ошибке.

9
задан Bill the Lizard 24 September 2010 в 21:35
поделиться

11 ответов

Использование регулярного выражения для синтаксического анализа HTML чревато ошибками. HTML не является регулярным языком и, следовательно, не может быть на 100% корректно обработан регулярным выражением. Это всего лишь одна из многих проблем, с которыми вы столкнетесь. Лучший способ - использовать синтаксический анализатор HTML / XML, чтобы сделать это для вас.

Вот ссылка на сообщение в блоге, которое я написал некоторое время назад, в котором содержится более подробная информация об этой проблеме.

Как сказано, вот решение, которое должно решить эту конкретную проблему. Однако это не идеальное решение.

var pattern = @"<(img|a)[^>]*>(?<content>[^<]*)<";
var regex = new Regex(pattern);
var m = regex.Match(sSummary);
if ( m.Success ) { 
  sResult = m.Groups["content"].Value;
18
ответ дан JaredPar 5 September 2018 в 08:52
поделиться

Вы можете использовать уже существующие библиотеки, чтобы отключить теги html. Одним из хороших является библиотека Chilkat C # .

1
ответ дан A_Var 5 September 2018 в 08:52
поделиться

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

/// <summary>
/// Converts an Html string to plain text, and replaces all br tags with line breaks.
/// </summary>
/// <returns></returns>
/// <remarks></remarks>
[Extension()]
public string ToPlainText(string s)
{

    s = s.Replace("<br>", Constants.vbCrLf);
    s = s.Replace("<br />", Constants.vbCrLf);
    s = s.Replace("<br/>", Constants.vbCrLf);


    s = Regex.Replace(s, "<[^>]*>", string.Empty);


    return s;
}

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

-1
ответ дан Breakskater 5 September 2018 в 08:52
поделиться

Итак, парсер HTML, о котором все говорят, - это Html Agility Pack .

Если это чистый XHTML, вы также можете использовать System.Xml.Linq.XDocument или System.Xml.XmlDocument.

2
ответ дан Dave Clemmer 5 September 2018 в 08:52
поделиться

Почему бы не попытаться избежать квантора? htmlString.replaceAll("<\\S*?>", "")

(Это Java, но главное - показать идею)

0
ответ дан fatnlazycat 5 September 2018 в 08:52
поделиться

Чтобы включить это:

'<td>mamma</td><td><strong>papa</strong></td>'

в это:

'mamma papa'

Вам нужно заменить теги пробелами:

.replace(/<[^>]*>/g, ' ')

и уменьшите любые повторяющиеся пробелы в одиночные пробелы:

.replace(/\s{2,}/g, ' ')

, затем обрезайте передние и конечные пробелы с помощью:

.trim();

Смысл в том, что ваша функция удаления тега выглядит следующим образом:

function removeTags(string){
  return string.replace(/<[^>]*>/g, ' ')
               .replace(/\s{2,}/g, ' ')
               .trim();
}
15
ответ дан Johs 5 September 2018 в 08:52
поделиться

Удалить изображение из строки, используя регулярное выражение в c # (поиск изображения, выполняемый идентификатором изображения)

string PRQ=<td valign=\"top\" style=\"width: 400px;\" align=\"left\"><img id=\"llgo\" src=\"http://test.Logo.png\" alt=\"logo\"></td>

var regex = new Regex("(<img(.+?)id=\"llgo\"(.+?))src=\"([^\"]+)\"");

PRQ = regex.Replace(PRQ, match => match.Groups[1].Value + "");
0
ответ дан Mayank Gupta 5 September 2018 в 08:52
поделиться

Сбросить HTML-элементы

/<\/?[\w\s]*>|<.+[\W]>/g

Это приведет к удалению всех элементов HTML и оставит текст. Это хорошо работает даже для искаженных HTML-элементов (т. Е. Элементов, которые не имеют закрывающих тегов)

Ссылка и пример (Ex.10)

0
ответ дан Niket Pathak 5 September 2018 в 08:52
поделиться

Вот метод расширения, который я использовал довольно долгое время.

public static class StringExtensions
{
     public static string StripHTML(this string htmlString, string htmlPlaceHolder) {
         const string pattern = @"<(.|\n)*?>";
         string sOut = Regex.Replace(htmlString, pattern, htmlPlaceHolder);
         sOut = sOut.Replace("&nbsp;", String.Empty);
         sOut = sOut.Replace("&amp;", "&");
         sOut = sOut.Replace("&gt;", ">");
         sOut = sOut.Replace("&lt;", "<");
         return sOut;
     }
}
0
ответ дан ShawnCamp 5 September 2018 в 08:52
поделиться

может использовать:

Regex.Replace(source, "<[^>]*>", string.Empty);
1
ответ дан Tran Anh Hien 5 September 2018 в 08:52
поделиться

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

    public static string StripHtml(string inputHTML)
    {
        const string HTML_MARKUP_REGEX_PATTERN = @"<[^>]+>\s+(?=<)|<[^>]+>";
        inputHTML = WebUtility.HtmlDecode(inputHTML).Trim();

        string noHTML = Regex.Replace(inputHTML, HTML_MARKUP_REGEX_PATTERN, string.Empty);

        return noHTML;
    }

Итак, для следующего input:

      <p>     <strong>  <em><span style="text-decoration:underline;background-color:#cc6600;"></span><span style="text-decoration:underline;background-color:#cc6600;color:#663333;"><del>   test text  </del></span></em></strong></p><p><strong><span style="background-color:#999900;"> test 1 </span></strong></p><p><strong><em><span style="background-color:#333366;"> test 2 </span></em></strong></p><p><strong><em><span style="text-decoration:underline;background-color:#006600;"> test 3 </span></em></strong></p>      

Выход будет только текстом без пробелов между тегами html или пробелом до или после html: «test text test 1 test 2 test 3».

Please обратите внимание, что пробелы до test text взяты из <del> test text </del> html, а пробел после test 3 - из <em><span style="text-decoration:underline;background-color:#006600;"> test 3 </span></em></strong></p> html.

2
ответ дан Vadim Tofan 5 September 2018 в 08:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: