我正在努力撰寫正確的正則運算式以匹配下面的資料。我想捕獲“Focus Terminal”及其可選引數“NYET”。如何重寫我不正確的正則運算式?
user:\/\/(.*)(?:=(.* ))?
我也嘗試過但失敗了:
user:\/\/(.*)=?(?:(.* ))?
樣本資料
* user://Focus Terminal=NYET
* user://Focus Terminal
uj5u.com熱心網友回復:
您可以使用
user:\/\/(.*?)(?:=(.*))?$
請參閱正則運算式演示。
詳情:
user:\/\/
- 一個user://
字串(.*?)
- 第 1 組:除換行符之外的任何零個或多個字符盡可能少(?:=(.*))?
- 一個可選的非捕獲組,與 a 匹配=
,然后盡可能多地將除換行符之外的任何零個或多個字符捕獲到第 2 組中$
- 字串結束。
uj5u.com熱心網友回復:
作為替代方案,您可以使用否定字符類,不包括匹配第一個捕獲組的換行符或等號。
user:\/\/([^=\n]*)(?:=(.*))?
解釋
user:\/\/
匹配user://
([^=\n]*)
捕獲組 1=
,匹配除換行符以外的可選字符(?:=(.*))?
可以選擇匹配并捕獲第2 組=
中的其余行
正則運算式演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/517298.html
標籤:正则表达式