Я пытаюсь выполнить несколько шагов регулярного выражения и хочу добавить кавычку и запятую (",) в конце этих строк, не изменяя остальные символы в строке.
Как бы мне сохранить все в целости, но добавить ", после слов: device1, device2, device3?
Пример строк, с которыми я работаю:
object network device1
host 192.168.1.11
object network device2
host 192.168.1.12
object network device 3
host 192.168.1.13
После моего первого шага регулярного выражения я изменил свою первую строку, включив фигурную скобку и некоторое форматирование со словами «категория» и «имя», как показано ниже. Однако я не хочу менять слово device1, а хочу поставить цитату и запятую после слова device1
{
"category": "network",
"name": "device1
host 192.168.1.11
{
"category": "network",
"name": "device2
host 192.168.1.11
{
"category": "network",
"name": "device3
host 192.168.1.13
Я не могу понять, как включить ", с моим первым шагом в моей последовательности замены регулярных выражений?
Я использую как regexr.com, так и Notepad++.
Нет закрывающих фигурных скобок, это опечатка?
Да, моя главная цель - добраться до места, где у меня есть закрывающие фигурные скобки. Я просто выполняю регулярное выражение, чтобы преобразовать его, и я показывал только свой первый шаг. У меня около 5000 "устройств" с разными именами. Вот пример того, с чего я начинаю: объект network device1 host 192.168.1.11 вот что я хочу получить: { "category": "network", "name": "device2", "cidr": "192.168.1.11" , "type": "cidr" }, поэтому я просто пытаюсь пройти через процесс изменения этих строк с помощью нескольких разных кодов регулярных выражений.
Это регулярное выражение "name": "(device\d+), но поскольку вы не упомянули какой-либо язык программирования, вы можете получить некоторую ошибку шаблона в зависимости от используемого вами языка, например "" в java потребуется escape-символ, поэтому, если вы используете java, используйте это регулярное выражение \"name\": \"(device\d+) Теперь вам нужно извлечь группу (device\d+) и поместить туда свой " например в java вы можете сделать это с помощью string.replaceAll
О, спасибо. мой первый пост. Я считаю, что хотел бы получить файл json, который я могу в конечном итоге загрузить в вызов API. Что, если описательное имя будет совершенно другим, а не просто: «устройство1, устройство2, устройство3», оно может быть любым, с разными словами разной длины? Есть ли способ поместить что-то вроде «имя»: «<что-то здесь, чтобы охватить любое количество символов перед новой строкой>, а затем добавить «, в конце?
\"имя\": \"(\w+\d+) попробуйте это регулярное выражение
Вы можете использовать это регулярное выражение для сопоставления каждой сущности во входных данных:
object\s+(\w+)\s+([^\r\n]+)[\r\n]+host\s+([\d.]+)
Это соответствует:
object\s+
: слово «объект», за которым следует несколько пробелов.(\w+)
: некоторое количество словесных (буквенно-цифровых плюс _
) символов, захваченных в группе 1\s+
: количество пробелов([^\r\n]+)
: некоторое количество символов, отличных от конца строки, захваченных в группе 2[\r\n]+
: некоторое количество символов конца строкиhost\s+
: слово «хозяин», за которым следует несколько пробелов.([\d.]+)
: некоторое количество символов цифр и точек, захваченных в группе 3Затем его можно заменить на:
{\n "category": "$1",\n "name": "$2",\n "host": "$3"\n},
Чтобы дать вывод (для ваших выборочных данных):
{
"category": "network",
"name": "device1",
"host": "192.168.1.11"
},
{
"category": "network",
"name": "device2",
"host": "192.168.1.12"
},
{
"category": "network",
"name": "device 3",
"host": "192.168.1.13"
},
Демонстрация регулярных выражений на regex101
Теперь вы можете просто добавить [ в начало файла и заменить последний , на ], чтобы создать действительный файл JSON.
Ник спасибо! Я почти уверен, что это именно то, что я искал. Спасибо всем, кто откликнулся на эту публикацию
@MichaelCaton приятно слышать. Я рад, что смог помочь.
Пожалуйста, покажите нам окончательный ожидаемый результат json и включите больше примеров данных, которые охватывают как можно больше всех случаев вашего входного текста.