-2

Я пытался найти другие ответы на этот вопрос, и мой мозг просто взрывается, когда я пытаюсь прочитать что-либо на Regex, я просто не могу понять это, независимо от того, сколько раз я читал это или как медленно.

Я пытаюсь удалить это из файла с помощью Notepad++:

<a style="text-decoration:none" href="/SOME RANDOM WORD">.</a>

Но я не уверен, какую строку поиска регулярных выражений мне нужно использовать в Notepad++, чтобы сделать это. Где SOME RANDOM WORD, это может быть буквально что угодно, но начало и конец тега / страницы, на которой он находится, одинаковы.

Я просто хочу удалить любой экземпляр

<a style="text-decoration:none" href="/SOME RANDOM WORD">.</a>

и заменить его ничем.

2 ответа2

1

В строке «Найти» введите следующее:

<a style="text-decoration:none" href=".+">\.</a>

Заменить на: оставьте пустым.

Затем нажмите «Заменить все».

Ключ здесь использует .+ Что означает, найти один символ из чего-либо или более. В основном это означает, что любой URL, текст которого идентичен, но с любым URL, будет найден и заменен. ни с чем. Можно отфильтровать URL-адрес или другие вещи, но, учитывая, что в вашем сообщении указано, что вы хотите заменить всю строку ни на что, эта информация не была предоставлена, чтобы не вводить вас в заблуждение.

Убедитесь, что вы выбрали Regular Expression внизу, но я думаю, вы уже подумали об этом.

Кроме того, вы должны экранировать специальные символы, такие как. Если ваши ссылки содержат фактический текст вместо., Вы должны заменить это \. с .+ тоже.

1

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

Путаница заключается в том, что в масках файла * означает произвольную строку любой длины (включая ноль), тогда как в регулярных выражениях это означает любое количество вхождений предыдущего шаблона. Итак, вы запросили строку, содержащую любое количество косых черт (только) между кавычками в предложении href= .

Что вам нужно было href="/.*" в вашем поисковом выражении, и это использует другую большую разницу между масками файлов, где ? соответствует любому отдельному символу и регулярным выражениям, где . используется, давая .* как любое количество произвольных символов.

Различное использование . означает, что >.</a> в конце вашего поискового выражения означает, что любой символ между > и </a> будет совпадать: соответствовать только литералу . Вы должны указать поисковому выражению, что вы хотите сопоставить его с литералом . , и вы делаете это, предшествуя . с так называемым escape- символом \ . Таким образом \. соответствует . и \* соответствует буквальному * .

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

<a style="text-decoration:none" href="/.*">\.</a>

Как вы видите, это очень мало отличается от того, что вы пробовали, только с двумя дополнительными (но критическими) персонажами, но я надеюсь, что мое объяснение может дать вам уверенность в том, чтобы продолжать их: вам обязательно понадобятся они снова.

Я не могу отрицать, что они запрещают, и я не могу рекомендовать легкий путь, хотя вы можете счесть этот тестер полезным (хотя он трактует / как специальный символ, которому должен предшествовать escape-символ \ - это происходит в некоторых контекстах , но не ваше, так что учтите это, если вы попробуете это в своем поисковом выражении).

Не стоит откладывать, потому что выражения кажутся бесполезными: я работал с ними годами, и многие из них находятся за пределами моего понимания, особенно проверка двоичных чисел, кратных 3, на странице Википедии - я нашел объяснения, но даже со степенью по математике я не могу понять выражение в деталях.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .