如何創建開始匹配的正則表達式?如何匹配啓動索引處的正則表達式?
換句話說:
什麼是\A
它說,「比賽在搜索的開始,即使它不是在主字符串的開頭相當於」?
new Regex(@"\A\n").IsMatch("!\n", 1); // Should be true, but is false
如何創建開始匹配的正則表達式?如何匹配啓動索引處的正則表達式?
換句話說:
什麼是\A
它說,「比賽在搜索的開始,即使它不是在主字符串的開頭相當於」?
new Regex(@"\A\n").IsMatch("!\n", 1); // Should be true, but is false
什麼你要找的是\G
:
new Regex(@"\G\n").IsMatch("!\n", 1); // It's twue, it's twue!
這是一個讓我吃驚,其實。我知道\G
,但它通常被描述爲匹配輸入開始或最近成功匹配結束的錨點,這兩者在這裏都不適用。如果這是一個.NET創新,他們應該更多地討論它;它看起來可能非常方便。
編輯:想想吧,Java的find(int)
確實以同樣的方式工作 - 我甚至已經廣泛使用它。但後來他們在Java 5中添加了「regions」API,它提供了更好的控制,並且我忘記了這個習慣用法。我從來沒有想過在.NET中尋找它。
我不能相信這是真的! +1 – Mehrdad
+1哇,你找到它了!從[.NET 1.1](http://msdn.microsoft.com/en-us/library/h5181w5w(v = VS.71).aspx) – NullUserException
OOOOH我剛剛想起一件事我讀到〜4 - 5年前在關於Regex.Match
一本書......
的重載不規矩我們希望他們的方式!
超載
Regex.Match(string input, int index, int length)
指定搜索,而過載
Regex.Match(string input, int index)
只是決定在搜索應該開始一個子!
(它省去了一個案例開始在任意位置在子,我猜。)
希望這是啓發人們...
+1開始,它看起來就已經存在了。是的,結果是新的正則表達式(@「\ A \ n」)匹配(「!\ n」,1,2)。成功也是雙重的。那些棘手的小惡魔! –
@NullUserExceptionఠ_ఠ:我將會在很長的一段時間內做這件事,所以這會非常昂貴。 – Mehrdad