我想提取之后的內容:,但是只能有一個:。
例子:
foo:bar # match, extract 'bar'
foo:123 # match, extract '123'
foo:bar:123 # do not match
所以最后一個例子不應該匹配,因為它有多個:.
我嘗試了否定的lookbehind ^. (?<!:):(. )$,但仍然匹配并從最后一個示例中提取。
這是一個演示。
uj5u.com熱心網友回復:
嘗試(regex101):
^[^:] :([^:] )$
這將只匹配帶有 1:的行并在:
uj5u.com熱心網友回復:
在 C# 中,您還可以使用帶有無限量詞的lookbehind 來獲得匹配:
(?<=^[^:]*:)[^:] $
解釋
(?<=積極向后看,斷言左邊是什么^斷言字串的開頭[^:]*:匹配可選字符以外:的其他字符,然后匹配:
)關閉后視[^:]匹配 1 個字符以外的字符:$字串結束
請參閱.NET 正則運算式演示。
如果您不想跨越換行符:
(?<=^[^:\r\n]*:)[^:\r\n] $
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/506684.html
