繁体   English   中英

Java 中的正则表达式模式匹配 toString()

[英]Regex Pattern Match toString() in Java

我正在寻找一些帮助来匹配字符串的模式(tostring() 生成):

MyObject{nothingSpecial='Word1', secretData='Word2', privateEmail='Word3'}

我想要一个可以匹配 Word1、Word3 的模式。 所以我想出了:

(?x)(["]?(nothingSpecial|secretData)["]?\s*[:=]{1}\s*["]?)(?:[^"\n,]+)

那行得通,但现在我需要加强它,以便我也可以匹配对象名称,例如MyObject

例子:

  1. 不匹配,因为它不是MyObject :YourObject{nothingSpecial='Word1', secretData='Word2', privateEmail='Word3'}

  2. 匹配到 MyObject 所以寻找 nothingSpecial & privateEmail: MyObject { nothingSpecial='Word1' , secretData='Word2', privateEmail='Word3' }

  3. 不匹配,因为它不是MyObject :TheyObject{nothingSpecial='Word1', secretData='Word2', privateEmail='Word3'}

说实话,我从来都不是一个很好的 RegEx,所以任何帮助都会非常感激。

要匹配这 3 个单词,您可以使用\G

(?:\b(MyObject)\h*\{\h*(?=[^{}]*})|\G(?!^))(?:(?:nothingSpecial|privateEmail)='([^'\n,]+)'|[^\s=]+='[^'\n,]*')(?:,\h*)?

正则表达式演示| Java演示

  • (?:非捕获组
    • \b(MyObject)\h*\{\h*组 1中捕获MyObject并匹配{
    • (?=[^{}]*})
    • | 或者
    • \G(?!^)在上一场比赛结束时断言 position
  • )关闭非捕获组
  • (?:非捕获组
    • (?:nothingSpecial|privateEmail)=匹配nothingSpecialprivateEmail后跟=
    • '([^'\n,]+)'捕获组 2匹配任何字符,除了'单引号之间的换行符或逗号
    • | 或者
    • [^\s=]+='[^'\n,]*'匹配带单引号的键值对
  • )关闭非捕获组
  • (?:,\h*)? 可选择匹配逗号和水平空白字符

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM