簡體   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