簡體   English   中英

正則表達式匹配以某個字符結尾但不以另一個以中間空格開頭的字符串

[英]Regex to match a string ending with a certain character but not beginning with another with intermediary whitespace

我正嘗試使用正則表達式: (?<!:)[\\s]+"無效。

我想要的是將引號與空格匹配,除非空格以冒號開頭。

上面的正則表達式是無用的,因為它匹配不正確。 上面的正則表達式將匹配字符串:__" (使用_表示空格),因為它僅匹配_" 它從第二個空格開始匹配,但根本不匹配。

我在找:

A " - MATCH
B " - MATCH
: " - NO MATCH
A:   " - NO MATCH
:    " - NO MATCH
:                           " - NO MATCH
:                A " - MATCH

負向后看無濟於事,因為它確實與大多數匹配。

匹配所需字符串的一種方法是要求在\\s+前面出現空格\\s或冒號:以外的其他字符:

(?<![:\s])\s+"

包括空格\\s中的負向后看列表確保了空間不能算作匹配字符串的目的“不是一個冒號”字符。

演示。

嘗試這個

      const string FILENAME = @"\temp\test.txt";
        static void Main(string[] args)
        {
            string input = File.ReadAllText(FILENAME);
            string pattern = "^[^:]\\s+\"";

            MatchCollection matches = Regex.Matches(input, pattern, RegexOptions.Multiline);
        }​

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM