Я пытался искать другие ответы на этот вопрос, но мой мозг просто взрывается, когда я пытаюсь прочитать что-либо о 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>
и заменить его ничем.
решение1
В строке «Найти» введите следующее:
<a style="text-decoration:none" href=".+">\.</a>
Заменить на: оставить пустым.
Затем нажмите «Заменить все».
Ключевым моментом здесь является использование .+
which означает, найти один символ чего-либо или более. Это в основном означает, что любой url, который имеет текст, идентичный, но с любым url, будет найден и заменен. ничем. Можно отфильтровать url или другие вещи, но, учитывая, что в вашем сообщении указано, что вы хотите заменить всю строку ничем, эта информация не была предоставлена, чтобы не запутывать вас еще больше.
Убедитесь, что вы выбрали «Регулярное выражение» внизу, но я думаю, вы уже об этом подумали.
Кроме того, вам придется экранировать специальные символы, такие как . Если в ваших ссылках есть фактический текст вместо ., вам также придется заменить его \.
на .+
.
решение2
Я отправляю еще один ответ не потому, что хочу поставить под сомнение принятый ответ, который очень хорош, а потому, что ваше поисковое выражение оказалось почти верным.
Путаница в том, что в масках файлов *
означает произвольную строку любой длины (включая ноль), тогда как в регулярных выражениях это означает любое количество вхождений предыдущего шаблона. Так что вы просили строку, содержащую любое количество слешей (только) между кавычками в предложении href=
.
То, что вам было нужно, было href="/.*"
в вашем выражении поиска, и это использует другое большое различие между масками файлов, где ?
соответствует любому отдельному символу, и регулярными выражениями, где .
используется , задавая .*
любое количество произвольных символов.
Различное использование .
означает, что >.</a>
в конце вашего поискового выражения означает, что любой символ между >
и </a>
будет соответствовать: чтобы соответствовать только литералу, .
вам нужно сообщить поисковому выражению, что вы хотите сопоставить его с литералом .
, и вы делаете это, поставив перед .
так называемымпобегсимвол \
. Таким образом \.
соответствует литералу .
и \*
соответствует литералу *
.
Ваша строка поиска работала бы идеально, если бы регулярные выражения использовали те же соответствия, что и маски файлов, но, к сожалению, это не так, и вам нужно следующее:
<a style="text-decoration:none" href="/.*">\.</a>
Как видите, это мало чем отличается от того, что вы пробовали, только с двумя дополнительными (но важными) символами, но я надеюсь, что мое объяснение придаст вам уверенности, чтобы заняться ими дальше: они вам обязательно понадобятся снова.
Я не могу отрицать, что они отталкивающие, и я не могу рекомендовать легкий путь, хотя вы можете обнаружить,этот тестерполезно (хотя он рассматривается /
как специальный символ, которому должен предшествовать экранирующий символ \
— в некоторых контекстах так и есть, но не в вашем, так что учтите это, если попробуете использовать его в выражении поиска).
Не пугайтесь, если выражения покажутся вам бессмысленными: я работаю с ними уже много лет, и многие из них все еще для меня непонятны, особенно проверка двоичных чисел, кратных 3 вСтраница Википедии- Я нашел объяснения, но даже имея степень по математике, я не могу понять это выражение в деталях.
Вы понимаете маски файлов и, используя простые модификации, необходимые для регулярных выражений, у вас есть отправная точка.