我正在嘗試匹配以下模式:
bla bla bla lorem ipsum bla bla [email protected] name!=Foo Bar
這是我目前的方法:
(email|name) \s*(>=|<=|>|<|=|!=)\s*([^ !=<>] )
因為我總是知道鍵(電子郵件、姓名),所以第一部分很簡單,但我無法將值與空格匹配。我在這里錯過了什么?
匹配的結束應該是新的鍵 運算子組合的開始。
uj5u.com熱心網友回復:
您可以使用
(email|name)\s*([><]=?|!?=)\s*(.*?)(?=\s*(?:(?:email|name)\s*(?:[><]=?|!?=)|$))
或者,如果鍵必須作為整個單詞匹配:
\b(email|name)\s*([><]=?|!?=)\s*(.*?)(?=\s*(?:\b(?:email|name)\s*(?:[><]=?|!?=)|$))
請參閱正則運算式演示。詳情:
\b(email|name)- 單詞邊界和 Group 1 捕獲email或name\s*- 零個或多個空格([><]=?|!?=)- 第 2 組:<或>然后是一個可選的=,或者一個可選的!然后是一個=字符\s*- 零個或多個空格(.*?)- 第 3 組:盡可能少的除換行符以外的零個或多個字符(?=\s*(?:\b(?:email|name)\s*(?:[><]=?|!?=)|$))- 正向前瞻,需要(緊接在當前位置的右側):\s*- 零個或多個空格(?:- 非捕獲組的開始:\b(?:email|name)\s*(?:[><]=?|!?=)-email或者name作為一個完整的單詞,然后是零個或多個空格,然后是一個<或>,然后是一個可選的=,或者一個可選的!,然后是一個=字符
|- 或者$- 字串結束
)- 小組結束。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/399401.html
上一篇:替換R中字串末尾的點
