Какой regex соответствие напишет, исключая то, что находится в HTML-тэгах?

Это простое изменение заставляет его работать.

<androidx.recyclerview.widget.RecyclerView
    android:id="@+id/recyclerViewFolderList"
    android:layout_width="0dp"
    android:layout_height="0dp"
    app:layout_constraintHeight_default="wrap"
    app:layout_constraintBottom_toTopOf="@+id/imgViewClose2"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/textView1" />

Спасибо всем, кто пытался мне помочь.

5
задан Chris 7 October 2008 в 18:43
поделиться

4 ответа

Этот regex должен сделать задание: (?<!<[^>]*)(regex you want to check: Fred|span) Это проверяет, что невозможно соответствовать regex <[^>]* идущий обратный запуск с соответствующей строки.

Измененный код ниже:

const string notInsideBracketsRegex = @"(?<!<[^>]*)";
const string highlightPattern = @"<span class=""Highlight"">$0</span>";
DataBoundLiteralControl litCustomerComments = (DataBoundLiteralControl)e.Row.Cells[CUSTOMERCOMMENTS_COLUMN].Controls[0];

// Turn "term1 term2" into "(term1|term2)"
string spaceDelimited = txtTextFilter.Text.Trim();
string pipeDelimited = string.Join("|", spaceDelimited.Split(new[] {" "}, StringSplitOptions.RemoveEmptyEntries));
string searchPattern = "(" + pipeDelimited + ")";
searchPattern = notInsideBracketsRegex + searchPattern;

// Highlight search terms in Customer - Comments column
e.Row.Cells[CUSTOMERCOMMENTS_COLUMN].Text = Regex.Replace(litCustomerComments.Text, searchPattern, highlightPattern, RegexOptions.IgnoreCase);
11
ответ дан 18 December 2019 в 14:54
поделиться

Можно использовать regex с балансирующимися группами и обратными ссылками, но я настоятельно рекомендую использовать синтаксический анализатор здесь.

2
ответ дан 18 December 2019 в 14:54
поделиться

Хм, я не программист C#, таким образом, я не знаю разновидность regex, который она использует, но (?! <. +?>), должен проигнорировать что-либо в тегах. Это вынудит Вас использовать &#60 &#62 в Вашем HTML-коде, но необходимо делать это так или иначе.

0
ответ дан 18 December 2019 в 14:54
поделиться

Запись regex, который может обработать разделы CDATA, будет трудной. Вы больше не можете предполагать, что> закрывает тег.

Например, "<span class="CustomerName>Fred.</span> is a good customer (<![CDATA[ >10000$ ]]> )"

Решением является (как отмечено ранее) синтаксический анализатор. Они намного лучше имея дело с видом путаницы, которую Вы находите в a CDATA. madgnome's назад проверяет, не может использоваться для нахождения запуска <![CDATA от a ]]>, как a CDATA раздел может включать литерал <![CDATA.

0
ответ дан 18 December 2019 в 14:54
поделиться
Другие вопросы по тегам:

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