我为中国、美国、日本、墨西哥、德国等不同的国家/地区设置了不同的课程。现在,每次在课程上执行操作(例如单击按钮)时,我都尝试创建详细的日志摘要。因此,每次单击按钮时,它都会执行该对象(下面的示例)并将其保存到数据库中。如何将我的对象转换为所需的结果,如下所示?另外,如果我使用\n移动到下一行,是否会在数据库中占用更多空间然后将其全部写到一行上?是\n相当于写一个完整的线?目的:className{Id=StringProperty [value: 2xy], Name=StringProperty [value: Joe], Age=StringProperty [value: twenty], Hair=StringProperty [value: curly], Color=StringProperty [value: brown]}期望的结果Id = 2xy,Name = Joe,Age = twenty,Hair = curly,Color = brown
1 回答
子衿沉夜
TA贡献1828条经验 获得超3个赞
这个怎么样:
(?:className{|, )(\w+?)=\w+ \[value: (\w+)(?:]}?)
Regex101提供的演示结果输出$1 = $2\n替换为:
Id = 2xy
Name = Joe
Age = twenty
Hair = curly
Color = brown
描述:
(?:className{|, )
是键名前的非捕获组(\w+?)
抓住关键$1
=\w+ \[value:
从字面上匹配键和值之间的描述部分。前任。火柴=StringProperty [value:
(\w+)
捕获值$2
(?:]}?)
是值后部分的非捕获组。总是以 结尾,]
有时以结尾}
,因此请使用?
与0
或匹配的引号运算符1
。
另一种不太严格的方法 ( Regex101 ) 是在空格或大括号{
和方括号之间捕获键,方括号]
偶尔后跟结尾的大括号}
。但是你必须在意className
->.*?
在开头:
.*?(?: |{)(\w+?)=.*? \[value: (\w+?)](?:,|})
添加回答
举报
0/150
提交
取消