为了账号安全,请及时绑定邮箱和手机立即绑定

借助正则表达式将对象属性转换为可读文本

借助正则表达式将对象属性转换为可读文本

慕森卡 2021-06-15 17:13:58
我为中国、美国、日本、墨西哥、德国等不同的国家/地区设置了不同的课程。现在,每次在课程上执行操作(例如单击按钮)时,我都尝试创建详细的日志摘要。因此,每次单击按钮时,它都会执行该对象(下面的示例)并将其保存到数据库中。如何将我的对象转换为所需的结果,如下所示?另外,如果我使用\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+?)](?:,|})


查看完整回答
反对 回复 2021-06-17
  • 1 回答
  • 0 关注
  • 162 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信