我想測試一個正則表達式是否匹配特定索引處的字符串的一部分(並且只從該特定索引處開始)。例如,給定字符串「one two 3 4 five」,我想知道,在索引8處,正則表達式[0-9] +將匹配「3」。 RegularExpression.IsMatch和Match都需要一個起始索引,但是如果需要的話,它們都會搜索整個字符串的其餘部分進行匹配。c#正則表達式匹配字符串中的特定索引?
string text="one two 3 4 five";
Regex num=new Regex("[0-9]+");
//unfortunately num.IsMatch(text,0) also finds a match and returns true
Console.WriteLine("{0} {1}",num.IsMatch(text, 8),num.IsMatch(text,0));
很顯然,我可以檢查所產生的比賽開始,我感興趣的是指數,但我將在做大量的大串倍,所以我不想把時間浪費在搜索對於稍後在字符串中的匹配。另外,我不會提前知道我將實際測試的字符串是什麼正則表達式。
我不想:
- 因爲在我 情況在一些邊界 像空格分割字符串我不會提前知道 什麼合適的邊界將是
- 有修改輸入字符串中 任何方式(如獲得子 在索引8,然後在正則表達式 使用^)
- 查詢的 串的其餘部分的墊ch或者做任何事情 否則不會對 執行大量針對 大字符串的測試。
我想解析一個潛在的大型用戶提供的正文使用任意用戶提供的語法。語法將以BNF或PEG類似的語法定義,並且終端將是字符串文字或正則表達式。因此,我需要檢查字符串的下一部分是否與由語法驅動的潛在終端相匹配。
你能解釋一下你在廣義上想要做什麼嗎?你對你不想做的事情的限制令人困惑。 – 2009-08-11 20:34:48
我添加了關於我在做什麼的簡要描述。此外,這些要求真的可以歸結爲:我不想做任何慢的事情,我也沒有深入瞭解我想要解決的問題。 – Rngbus 2009-08-11 23:34:22