3

Например.

64d134a354eb2bf43626a73091514a2d:QMP0R\khOiPmkW1>bP,_-NTY4%-!P#:a123456
7d057d46b88f2cf4845dec57be4f3158:iR+LE[SQ\R~~o*+CCNL?i)mC>$G:U#:123321
6e0c116855a273f0c8c41dec1d21c160:s'?:fL2/mVj{&[`Onkyqf"y~47^YU#:abc123

Все строки соответствуют шаблону из трех частей. Первые две части разделены двоеточием и обязательным элементом после второго двоеточия.

Исключение: во второй части строки также существует случайное двоеточие. (см. третью строку, оканчивающуюся на "abc123")

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

a123456
123321
abc123

Примечание: это должно быть применено к большой партии таких строк!

4 ответа4

3

В Notepad++ вы можете использовать функцию «Найти и заменить», чтобы удалить все до третьего сегмента.

Просто используйте эту находку, включив переключатель Регулярные выражения:

^.*:(?!.*:)

И заменить ничем, затем нажмите «Заменить все».

Что означает это выражение:

^       Ensure match begins at the start of the line
.*      Match any number of characters
:       Until it matches a colon (:)
(?!     And ensure that after the colon, there are no...
  .*:   Colon after any number of characters on the same line
)

Результат:


Если третья часть также может содержать двоеточия, но она всегда будет начинаться с #: при сравнении с другими частями, вы можете использовать немного другое выражение для поиска:

^.*#:

И заменить ничем.

1

Есть несколько способов сделать это.

Возможно, самый простой способ - просто загрузить файл в текстовом редакторе Sublime, и удерживая клавишу Ctrl + средний щелчок в начале первого фрагмента текста, который вы хотите сохранить (a123456), и перетащить средний щелчок вниз в нижний правый угол документа. , Вы должны выделить весь нужный текст. Затем Ctrl + C, Ctrl + V в новый файл. Это предполагает, что все строки имеют желаемый текст, начинающийся в одном и том же месте, которое выглядит как столбец 67 из вашего примера.

Если нет, загрузите файл в превосходной форме, нажмите Ctrl + F, а затем нажмите кнопку .* На панели инструментов поиска в нижней части. Ищи

#:(.*)

Нажмите найти все справа, затем скопируйте и вставьте его в новый документ. Ctrl + F, чтобы найти снова, поиск

^..

найди все снова и удали. Это оставляет вам только ваши строки в конце (a123456, 123321, abc123)

Как это работает? Кнопка .* Выполняет поиск регулярных выражений или регулярных выражений. Regex определяет правила, по которым вы сопоставляете шаблоны текста. Ваши правила здесь довольно просты: найдите текст, начинающийся с #: и возьмите все после него. Возможно, вы могли бы сделать это за один шаг, но я пока не самый лучший в Regex. так что мы делаем поиск #: за которым следует любое число (*) любого символа (.). Затем мы скопировали это в новый файл.

Затем мы сопоставили начинающиеся (^) два символа (..) и просто удалили их, чтобы они остались с текстом, который мы хотим.

Я рекомендую вам использовать Sublime text editor для этого, потому что он бесплатный, быстрый, и его функция поиска позволяет очень легко выбирать отдельные группы текста и копировать + вставлять их в другое место. Notepad ++ тоже может это делать, но функция регулярных выражений добавляет кучу мусорного текста, указывающего, где были найдены совпадения, что, конечно, вам не нужно.

0

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

.*:(.*)

Заменить на должно быть:

\1

Я использовал Sublime Text, но notepad2/Notepad++ будет работать.

Regex объяснение:

.* - Matches any number of characters
:  - Match a colon
(.*) - Match any number of character as a subgroup

Затем \1 заменяет всю совпавшую строку содержимым подгруппы (текст, который вы хотите). По умолчанию Regex является жадным (в большинстве реализаций) и будет соответствовать самым длинным возможным строкам. Это означает, что это регулярное выражение будет соответствовать как можно большему числу символов перед второй частью регулярного выражения (двоеточие, за которым следует любое количество символов).

0

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

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

Примерно такая формула, которую я тестировал в Excel 2010:

= ЕСЛИ (ЕПУСТО (D1), С1, ЕСЛИ (ISBLANK (E1), D1, ЕСЛИ (ISBLANK (F1), E1, F1)))

рассмотрит строки C, D и E и поместит значение из последнего столбца в ячейку с уравнением.

Эта формула смотрит только на 3 столбца, она может быть изменена бесконечно

Если вы используете заполнение для заполнения столбца, вы должны получить ответы, которые вы ищете в столбце А.

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