regex 如何在行后添加字符

sbtkgmzw  于 2023-02-20  发布在  其他
关注(0)|答案(2)|浏览(106)

我正在尝试执行一些正则表达式的步骤,我想在这些行的末尾添加一个引号和一个逗号,而不改变行中的任何其他字符。我如何保持原样,但在以下单词后添加":设备1设备2设备3
我正在使用的线路示例:
对象网络设备1
主机www.example.com192.168.1.11
对象网络设备2
主机www.example.com192.168.1.12
对象网络设备3
主机www.example.com192.168.1.13
在regex的第一步之后,我修改了我的第一行,以包括花括号和一些带有单词"category"和"name"的格式,如下所示。但是,我不想更改单词"device1",而是想在单词device1之后包括引号和逗号
{
"类别":"网络",
"名称":"设备1
主机www.example.com192.168.1.11
{
"类别":"网络",
"名称":"设备2
主机www.example.com192.168.1.11
{
"类别":"网络",
"名称":"设备3
主机www.example.com192.168.1.13
我不知道如何在正则表达式替换序列的第一步中包含""。
我同时使用www.example.com和记事本++。Regexr.com and notepad++.

mftmpeh8

mftmpeh81#

您可以使用此正则表达式来匹配输入数据中的每个实体:

object\s+(\w+)\s+([^\r\n]+)[\r\n]+host\s+([\d.]+)

这匹配:

  • object\s+:单词“object”后跟多个空格
  • (\w+):一定数量的单词(字母数字加_)字符,在组1中捕获
  • \s+:多个空格
  • ([^\r\n]+):一定数量的非行尾字符,在组2中捕获
  • [\r\n]+:一定数量的行尾字符
  • host\s+:单词“host”后跟多个空格
  • ([\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文件。

unhi4e5o

unhi4e5o2#

这是正则表达式"name": "(device\d+),但由于您没有提到任何编程语言,因此可能会根据您使用的语言出现一些模式错误,例如,java中的""需要转义符,因此,如果您使用java,则使用此正则表达式\"name\": \"(device\d+)。现在,您必须提取组(device\d+)并将"放在那里,例如,在java中,您可以使用string.replaceAll

相关问题