Регулярное выражение, чтобы не начинать с определенного слова

я пытаюсь добавить перед каждым словом, у которого нет начала [string]:, чтобы иметь Line: в начале, поэтому я сделал это регулярное выражение ^(?![^:]+:)https://regex101.com/r/oMF8ks/1

а если я напишу

1
2
3

он возвращает то, что я хочу ожидать

Line:1
Line:2
Line:3

и для

Line:1
Line:2
Line:3

он возвращается так же, как и хотел

но моя проблема, когда я пытаюсь применить его к https://regex101.com/r/K0z3bc/1

1 : A
2 : B
3 : C

Я ожидал

Line:1 : A
Line:2 : B
Line:3 : C

но я только получил

1 : A
2 : B
3 : C

но когда я изменяю регулярное выражение на ^(?!Line:)https://regex101.com/r/49i9tQ/1, оно работает, но я хочу, чтобы оно работало для всех слов, а не только Line

^(?![^\s:]+:)
designer132 05.05.2022 15:55

@designer132 это не сработает для таких строк, как 1:A

yvgwxgtyowvaiqndwo 05.05.2022 15:56
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
2
33
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Ты можешь использовать

^([^:\s]++)(?!:)

и заменить на Line:$1.

См. демонстрация регулярных выражений. Подробности:

  • ^ - начало строки
  • ([^:\s]++) - Группа 1: один или несколько символов, отличных от : и пробела (притяжательный квантификатор предотвращает возврат в шаблон [^:\s] и, таким образом, предотвращает частичное совпадение, если двоеточие присутствует дальше в строке)
  • (?!:) - сразу после двоеточия не следует.

Вы также можете опустить группу, а затем использовать ^[^:\s]++(?!:) и заменить на Line:$0. См. эта демонстрация регулярных выражений.

нет ли способа проверить, запускается ли он только один раз по этому правилу ([a-z]+:) так же, как (Line:) - потому что : может быть :: или :::, поэтому я бы использовал ([a-z]+:::)

yvgwxgtyowvaiqndwo 05.05.2022 16:20

@yvgwxgtyowvaiqndwo Вы имеете в виду ^[A-Za-z0-9]++(?!:)?

Wiktor Stribiżew 05.05.2022 16:24

Шаблон, который вы пробовали ^(?![^:]+:), означает: утверждать, что справа от текущей позиции нет 1 или более символов, отличных от :, а затем сопоставлять :

Вы не получите подходящей замены для таких строк, как 1 : A, потому что инвертированный класс символов [^:] также соответствует символу пробела.

Вы также можете исключить совпадающие пробельные символы:

^(?![^:\s]+:)

См. замены в демонстрация регулярного выражения101.

Другие вопросы по теме