1

我为中国、美国、日本、墨西哥、德国等不同的国家/地区设置了不同的课程。现在,我尝试在每次对课程执行操作时(例如单击按钮)创建详细的日志摘要。因此,每次单击按钮时,它都会执行对象(下面的示例)并将其保存到数据库中。如何将我的对象转换为所需的结果,如下所示?

另外,如果我使用\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
4

1 回答 1

2

这个怎么样:

(?:className{|, )(\w+?)=\w+ \[value: (\w+)(?:]}?)

Demo 可在Regex101中获得,结果输出$1 = $2\n替换为:

Id = 2xy
Name = Joe
Age = twenty
Hair = curly
Color = brown

描述:

  • (?:className{|, )是键名前的非捕获组
  • (\w+?)抓住关键$1
  • =\w+ \[value:从字面上匹配键和值之间的描述部分。前任。火柴=StringProperty [value:
  • (\w+)将值捕获到$2
  • (?:]}?)是值后面部分的非捕获组。总是以 结尾,]有时以 继续,因此请使用匹配或}出现的引号运算符。?01

另一种不太严格的方法 ( Regex101 ) 是捕获空格或大括号{与方括号之间的键,方括号]后面偶尔会跟着一个结束大括号}。但是你必须在开始时介意className-> .*?

.*?(?: |{)(\w+?)=.*? \[value: (\w+?)](?:,|})
于 2018-07-29T18:24:58.230 回答