我正在嘗試決議 Kubernetes Pod 名稱以進行日志記錄。
我的 pod 名稱總是這樣
<deployment>-<replicaset>-<uid>
<job>-<uid> <-- if created by a job
這是一些示例
events-worker-7c9b7bdc55-f7sgc
notification-585f6b94b8-t4jjc
report-generator-749ccf648d-gd9j7
static-content-8445d7f556-wbxvp
init-database-fm44h <-- if created by a job
我想要得到的是<deployment/job>部分。對于上述樣本,這將是
events-worker
notification
report-generator
static-content
init-database
我從這樣的事情開始
(?<role_name>.*)(?:-[a-z0-9]{8,10})(?:-[a-z0-9] )
并以此結束
(?:(?<role_name>[a-z0-9] (?:-[a-z0-9] )*))-(?<=-)[a-z0-9] -(?:(?<=-)[a-z0-9] )
但我無法匹配這兩種情況(當名稱有副本集并且沒有副本集時)
它要么根本不匹配init-database-fm44h要么只捕獲init而不是init-database。
任何幫助將不勝感激
uj5u.com熱心網友回復:
您可以使用
\b(?<!-)(?<role_name>[a-z0-9] (?:-[a-z0-9] )*?)(?:-([a-f0-9]{10}))?-([a-z0-9] )\b(?!-)
請參閱正則運算式演示。
詳情:
\b(?<!-)
- 沒有緊接在前面的單詞邊界-
(?<role_name>[a-z0-9] (?:-[a-z0-9] )*?)
- 使用 ID 1 對“角色名稱”進行分組:一個或多個字母或數字,然后是零個或多個序列-
以及一個或多個字母/數字,次數盡可能少(?:-([a-f0-9]{10}))?
- 一個可選的非捕獲組匹配一個-
,然后十個十六進制字符被捕獲到組 2-
- 一個連字符([a-z0-9] )
- 第 3 組:一個或多個字母或數字\b(?!-)
- 不緊跟 . 的單詞邊界-
。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/528901.html
標籤:C#正则表达式