Nano Hash - криптовалюты, майнинг, программирование

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

Допустим, у меня есть следующий текст:

#Foo foo bar bar
foo bar foo
#bar Foo Foo
foo bar

Допустим, я хочу заменить пробелы символами - в строках, начинающихся с символа #. Итак, вывод должен быть:

#Foo-foo-bar-bar
foo bar foo
#bar-Foo-Foo
foo bar

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

/^#(.*)$/gm

Но могу ли я каким-либо образом изменить эти последовательности $1?

P.S. Я использую регулярное выражение внутри блокнота++ для преобразования некоторых данных из Excel в код (на самом деле это очень удобно).

PS2 Мне также пришлось заменить некоторые символы табуляции в тексте, и, немного поработав с ответом Авинаша Раджа, я обнаружил, что могу сделать это, используя это регулярное выражение... За исключением того, что это не сработало, как предполагалось, но Авинаш Радж был достаточно любезен, чтобы помочь еще раз с этим регулярным выражением.

/(?:^#|(?<!^)\G)[\S ]*\K\t/gm

ДЕМО

30.09.2014

  • каков ваш ожидаемый результат? 30.09.2014
  • @AvinashRaj Верный момент, совсем забыл об этом (-_-; ) 30.09.2014
  • @AvinashRaj Добавлен ожидаемый ответ на вопрос 30.09.2014

Ответы:


1

Я думаю, что notepad++ будет поддерживать \G. Якорь \G соответствует позиции, в которой закончилось предыдущее совпадение.

Регулярное выражение:

(?:^#|(?<!^)\G)\S*\K[ \t]+

Строка замены:

-

ДЕМО

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

(?:^#|(?<!^)\G)\S*\K[ \t]
30.09.2014
  • Почему \S? Это просто приводит к тому, что шаблон не работает с #foo\t bar. А почему `+`? Это преобразует несколько последовательных пробелов в одно тире. 30.09.2014
  • @Rawing, я думаю, теперь это работает во всех случаях. или просто используйте \h вместо [ \t] 30.09.2014
  • Спасибо за второй пример. Хотя первый работает с тестовыми данными, представленными в вопросе, когда я изменил его, чтобы он соответствовал моей конкретной проблеме, это не сработало. Однако второй пример работал, как и предполагалось, с моими изменениями. 30.09.2014
  • я думаю, это из-за символов табуляции, присутствующих в вашем входном файле. обычный пробел не будет соответствовать символу табуляции, а \s также будет соответствовать символу новой строки. Поэтому я добавил пробел и \t внутри класса символов. 30.09.2014
  • Можете ли вы взглянуть на regex101.com/r/aW3pR4/1? Я думал, что мне удалось изменить ваше регулярное выражение, чтобы заменить табуляторы, но, похоже, оно не соответствует концу строк. 30.09.2014
  • Почему? что не так с этим regex101.com/r/aW3pR4/2? Если вы [^\t]*, это также будет соответствовать предыдущим строкам. 30.09.2014
  • @AvinashRaj Я пытался заменить только табуляторы (исключая пробелы). 30.09.2014
  • Новые материалы

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

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..