Regex только во втором случае - PullRequest
1 голос
/ 28 сентября 2019

Можно ли выполнить мое регулярное выражение при втором появлении только определенного символа?

Используемое регулярное выражение:

@.*

Пример данных:

Stack@overflow:Stack@overflow

Желаемый вывод:

Stack@overflow:Stack

Как видно из вывода, все, включая и после второго вхождения @, было удалено, но текст до него остается.

Я использую Notepad ++ или любой текстовый редактор, который позволяет использовать Regex.

Ответы [ 3 ]

2 голосов
/ 28 сентября 2019

Шаблон @.* будет соответствовать первому вхождению @, а затем будет соответствовать любому символу, кроме новой строки, до конца строки, а точка также будет соответствовать всем следующим @ знакам.

Если : также должен быть границей, вы можете использовать отрицательный класс символов для сопоставления с любым символом, кроме @ или :

[^@:]+@[^@:]+:[^@:]+
  • [^@:]+ Соответствует любому символу, кроме @ или :
  • @ Соответствует буквально
  • [^@:]+ Соответствует любому символу, кроме @ или :
  • : Совпадение буквально
  • [^@:]+ Совпадение с любым символом, кроме @ или :

Regex demo

1 голос
/ 28 сентября 2019
  • Ctrl + H
  • Найти что: ^.+\K@.+$
  • Заменить на: LEAVE EMPTY
  • check Обтекание
  • check Регулярное выражение
  • UNCHECK . matches newline
  • Заменить все

Объяснение:

^               # beginning of line
  .+            # 1 or more any character but newline
  \K            # forget all we have seen until this position
  @             # literally @
  .+            # 1 or more any character but newline
$               # end of line

Дано:

Stack@overflow:Stack@overflow

Результат для данного примера:

Stack@overflow:Stack

Снимок экрана (до):

enter image description here

Снимок экрана (после):

enter image description here

1 голос
/ 28 сентября 2019

Вы можете попробовать

^[^@]*@[^@]*

enter image description here

Regex Demo

...