[英]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.