隨着輸入:正則表達式匹配托架時它不應該
「一個[HREF * = \」測試\「]」
我試圖標籤名從符合以下jQuery選擇:
Regex r = new Regex("^[A-z]+");
string tagName = r.Match("a[href*=\"test\"]").Value;
的問題是它到z收集左括號,而不是隻答:
的tagName =「一個[HREF」
爲什麼它收集托架如果在表達式未指定呢?
隨着輸入:正則表達式匹配托架時它不應該
「一個[HREF * = \」測試\「]」
我試圖標籤名從符合以下jQuery選擇:
Regex r = new Regex("^[A-z]+");
string tagName = r.Match("a[href*=\"test\"]").Value;
的問題是它到z收集左括號,而不是隻答:
的tagName =「一個[HREF」
爲什麼它收集托架如果在表達式未指定呢?
這是因爲這
[A-z]
創建一個從ASCII 'A' 到ASCII 'Z' 的字符範圍。除Z和a之外的字母之外還有其他字符,其中之一是[
字符。改用:
[A-Za-z]
從A-Z
和範圍相匹配的範圍從a-z
,但並不表明他們之間落在字符。你可以看一個ASCII table看到細節,但該總結的字符(在他們的數字ASCII順序)是這樣的:
A, B, ..., Y, Z, [, \, ], ^, _, `, a, b, c, ..., z
你應該嘗試像regexpal一個工具來測試這樣的東西。這裏是你的榜樣:
http://regexpal.com/?flags=g®ex= ^%5BA-Z%5D%2B &輸入=一%5Bhref *%3D%5C%22test%5C%22%5D
什麼怪我是小寫「 z「 - 出於某種原因,即允許支架通過。
嘗試這種情況:
^[^\[]+
http://regexpal.com/?flags=g®ex= ^%5B ^%5C%5B%5D%2B &輸入=α%5Bhref *%3D%5C%22test%5C%22%5D
我不是downvoter,但我認爲投票發生是因爲您實際上未提供問題的答案(**爲什麼**會在表達式中未指定時收集括號?)。如果問題是如此基本的問題,在很多人的書中提供解決方法並承認自己對此問題感到困惑。 – kopischke
作品像一個魅力,謝謝 – John
@約翰,如果它解決了你的問題,你應該接受答案是正確的。 (請在此答案的選票下方標記,以便選中標記變爲綠色。) –