我回來了另一個正則運算式問題。我已經嘗試了一些事情,但我似乎無法用我擁有的一些訊息傳遞資料來解決這個不幸的問題。我需要決議 swift 訊息的特定值,這適用于我 99% 的情況,但有時有人在我關心的欄位中輸入了終止字符。
想象一下我有一個這樣的文本字串
some noise :50F: some noise 3/GB some noise :50A:
我的運算式正在尋找欄位 :50F: 中 3/ 之后的 2 個字符,編碼如下;
50F:[^:]*?3\/([A-Z]{2})
我使用 [^:] 因為我只關心 50F 欄位中的那些值,例如,如果我有這樣的字串;
some noise :50F: some noise some noise :50A: 3/GB
我不想匹配GB
這非常有效 - 除了在極少數情況下我的字串本身包含 : 在欄位結束之前(似乎對此沒有限制),例如;
some noise :50F: some : noise 3/GB some noise :50A:
顯然什么都不回傳 - 它只是在那里真正搜索“一些”。
問題在于:50A:在此欄位之后,它可能是多個欄位中的任何一個(我什至不確定該串列),但每個欄位都是:[0-9]{2,3}[ AZ]{0,1}:- 無論如何,當它到達那種模式的東西時,是否會停止對值的搜索?而不是我目前使用的一個冒號?
我懷疑解決方案是某種消極的前瞻性 - 我只是沒有設法讓任何作業特別是到目前為止
uj5u.com熱心網友回復:
您可以使用
50F:(?:(?!:[0-9]{2,3}[A-Z]?:).)*?3\/([A-Z]{2})
請參閱正則運算式演示。
詳情:
50F:- 文字字串(?:(?!:[0-9]{2,3}[A-Z]?:).)*?- 任何單個字符(換行符除外),零次或多次出現但盡可能少,不以以下模式開頭::兩位或三位數字 可選的 ASCII 大寫字母和:字符(有關更多詳細資訊,見回火貪婪令牌相關帖子)3\/- 文字3/字串([A-Z]{2})- 第 1 組:兩個大寫字母。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/481390.html
標籤:正则表达式
上一篇:正則運算式不匹配字串中多個斜杠
