[英]Regex Pattern Match toString() in Java
我正在寻找一些帮助来匹配字符串的模式(tostring() 生成):
MyObject{nothingSpecial='Word1', secretData='Word2', privateEmail='Word3'}
我想要一个可以匹配 Word1、Word3 的模式。 所以我想出了:
(?x)(["]?(nothingSpecial|secretData)["]?\s*[:=]{1}\s*["]?)(?:[^"\n,]+)
那行得通,但现在我需要加强它,以便我也可以匹配对象名称,例如MyObject
不匹配,因为它不是MyObject
:YourObject{nothingSpecial='Word1', secretData='Word2', privateEmail='Word3'}
匹配到 MyObject 所以寻找 nothingSpecial & privateEmail: MyObject { nothingSpecial='Word1' , secretData='Word2', privateEmail='Word3' }
不匹配,因为它不是MyObject
:TheyObject{nothingSpecial='Word1', secretData='Word2', privateEmail='Word3'}
说实话,我从来都不是一个很好的 RegEx,所以任何帮助都会非常感激。
要匹配这 3 个单词,您可以使用\G
锚
(?:\b(MyObject)\h*\{\h*(?=[^{}]*})|\G(?!^))(?:(?:nothingSpecial|privateEmail)='([^'\n,]+)'|[^\s=]+='[^'\n,]*')(?:,\h*)?
(?:
非捕获组
\b(MyObject)\h*\{\h*
在组 1中捕获MyObject
并匹配{
(?=[^{}]*})
|
或者\G(?!^)
在上一场比赛结束时断言 position)
关闭非捕获组(?:
非捕获组
(?:nothingSpecial|privateEmail)=
匹配nothingSpecial
或privateEmail
后跟=
'([^'\n,]+)'
捕获组 2匹配任何字符,除了'
单引号之间的换行符或逗号|
或者[^\s=]+='[^'\n,]*'
匹配带单引号的键值对)
关闭非捕获组(?:,\h*)?
可选择匹配逗号和水平空白字符
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.