Регулярное выражение: Найти все слова, разделенные знаками + - = (Поиск и замена)

Регулярное выражение: Найти все слова, разделенные знаками + - = (Поиск и замена)

У меня такой сценарий:

data-cycle-center-horz=true other words

data-cycle-caption=".custom-captions" other words

data-cycle-caption-template="{{slideNum}} other words

before words .data-cycle-caption-template="{{slideNum}} other words

.data-cycle-caption-template="{{slideNum}} other words

Итак, мне нужно найти все слова, разделенные знаками.- = . "{

Я создал регулярное выражение для NOTEPAD++ для поиска и удаления тех слов, которые имеют знаки до и после (вся строка) без других слов, но оно не очень хорошее:

ПОИСК: (?!\w+[-."={])

ЗАМЕНИТЬ: (оставить пустым)

Ожидаемый результат должен быть:

other words

other words

other words

before words other words

other words

решение1

  • Ctrl+H
  • Найти то, что:(?:^|[+=."{}-]+)(?:\w+[+=."{}-]+)+\h*
  • Заменить:LEAVE EMPTY
  • проверить Обернуть вокруг
  • проверить Регулярное выражение
  • Replace all

Объяснение:

(?:             # start non capture group
  ^             # beginning of line
 |              # OR
  [+=."{}-]+    # 1 or more + = . " { } -
)               # end group
(?:             # start non capture group
  \w+           # 1 or more word character
  [+=."{}-]+    # 1 or more + = . " { } -
)+              # end group, may appear 1 or more times
\h*             # 0 or more horizontal spaces

Скриншот:

введите описание изображения здесь

решение2

Это написано на Python, оно загружает ваши тестовые данные из файла "data.txt" в том же каталоге.

Установить Питон

import os, re

path = "./data.txt"
if os.path.isfile(path): #use local leader file
    oFile = open(path)
    strFile = oFile.read() #get old leaders
    oFile.close()
else:
    print("File Not Found")

def replace(line):
    for i in line:
        if ( i == '-' or i == '=' or i == '.' or i == '"' or i == '{' or i == '}'):
            line = line.replace(i,"\n")#Delete \n and replace it with xyz to see
    return line

lines = strFile.split("\n")
for line in lines:

    answer = replace(line)

    print(answer)

центр цикла данных horz true заголовок цикла данных пользовательские подписи шаблон заголовка цикла данных slideNum

решение3

Из вашего вопроса я понял, что вы хотите сопоставить все слова, но не разделяющие их специальные символы, верно?

[^-=."{}\r\n]+Должно сработать. Он будет соответствовать всему, что не является вашими специальными символами - = . "{или переносом строки.

Вы можете создать и протестировать регулярное выражение с помощью онлайн-инструмента, напримеррегулярное выражение101

Обновлять
Следующее регулярное выражение удаляет слова, как вы описали, а также конечные пробелы:([^\s]+[-=."{}\r\n][^\s]+\s*)+

Я успешно проверил это на вашем примере:

До:

data-cycle-center-horz=true other words

data-cycle-caption=".custom-captions"  other words

data-cycle-caption-template="{{slideNum}}  other words

before words .data-cycle-caption-template="{{slideNum}}  other words

.data-cycle-caption-template="{{slideNum}}  other words

После:

other words

other words

other words

before words other words

other words

Связанный контент