我確定有一個簡單的解決方案,但我似乎錯過了它。正則表達式C#問題
我需要一個正則表達式來做到以下幾點:
asdf.txt;qwer
應符合asdf.txt
"as;df.txt";qwer
應符合as;df.txt
正如你所看到的,我需要匹配的分號,但如果存在引號(當值中有分號)時,我需要在引號內匹配。由於我正在查找文件名,因此值中將不會有引號。
我的正則表達式的味道是C#。
感謝您的幫助!
我確定有一個簡單的解決方案,但我似乎錯過了它。正則表達式C#問題
我需要一個正則表達式來做到以下幾點:
asdf.txt;qwer
應符合asdf.txt
"as;df.txt";qwer
應符合as;df.txt
正如你所看到的,我需要匹配的分號,但如果存在引號(當值中有分號)時,我需要在引號內匹配。由於我正在查找文件名,因此值中將不會有引號。
我的正則表達式的味道是C#。
感謝您的幫助!
"[^"]+"(?=;)|[^;]+(?=;)
這符合雙引號跟一個分號或文本後跟一個分號中的文本。分號不包含在比賽中。
編輯:實現我的第一次嘗試將匹配報價。以下表達式將排除引號,但使用子表達式。
"([^"]+)";|([^;]+);
我已經從來沒有使用過?= notation,它叫什麼,什麼風味支持它? – 2010-10-27 17:41:46
它是'向前看等於'。它至少支持.NET和JavaScript。我最喜歡測試正則表達式的站點是http:// www .regexlib.com/RETester.aspx。它支持多種引擎,包括JavaScript和.NET。 – 2010-10-27 18:08:18
你讓我走在正確的道路上,這裏是我選擇的正則表達式'(?<=「)?[^」] +(? =「?;)' – 2010-10-27 18:10:31
你需要使用正則表達式,你可以只使用C#字符串的方法包括:
string s = "asdf.txt;qwer";
string s1 = "\"as;df.txt\";qwer";
return s.Contains("asdf.txt"); //returns true
return s1.Contains("\"as;df.txt\""); //returns true
如果您正在尋找asdf.txt和兩個明確的字符串; df.txt這些可以然後只需成爲你的兩個正則表達式。所以如下所示。
Matches matches = Regex.Matches('asdf.txt;qwer',"asdf.txt");
和
Matches matches = Regex.Matches('"as;df.txt";qwer',"as;df.txt");
享受!
他們不是那些特定字符串,它們可以是任何有效的文件名 – 2010-10-27 17:31:28
這應該做你:
(".*"|.*);
它在技術上的分號匹配的爲好,但你可以砍其關閉或只使用反向引用(如果C#支持反向引用)
這將匹配到;
如果沒有引號或引用文本後跟;
如果有引號。
("[^"]+";|[^;]+;)
這場比賽將包括分號。 – 2010-10-27 18:11:27
你能有引號內的轉義引號(如\」或‘’)? – 2010-10-27 17:29:57