作者terrytai (Terry)
看板C_Sharp
標題Re: [問題] 如何把字串中的特定字串擷取出來
時間Sun Feb 19 16:45:59 2006
謝謝各位大大
之前小弟看完第一篇的第一個推文之後
就去找了RE的教學網站
今天再看版才發現又有好多大大回了小弟的問題
不過其他的方法小弟都還沒試
先說這兩天學RE的問題
我是看這個網站學的
http://0rz.net/fa14d
這裡講的很詳細,只是要花點時間消化英文
後來我寫來比對字串的程式碼如下
Regex regex = new Regex(
@"\b"">\b.*\b</a>",
RegexOptions.IgnoreCase
| RegexOptions.CultureInvariant
| RegexOptions.IgnorePatternWhitespace
| RegexOptions.Compiled
);
接下來就是要把我比對出來的用MessageBox.Show印出來
不過那個網站只教了如何比對而已
所以就到微軟MSDN的Example: Scanning for HREFs這一頁
網址
http://0rz.net/c715w
不過這裡小弟實在是看不太懂
就照著它的範例改寫成下面這樣
Match m;
for (m = regex.Match(outFilePath); m.Success; m = m.NextMatch())
{
MessageBox.Show("Found href " + m.Groups[1] + " at "
+ m.Groups[1].Index);
}
接下來我就卡關了
可以compile也可以run
不過那個MessageBox就是怎樣都Show不出來
請問大大問題出在哪裡
整段程式碼是這樣
void DumpHrefs(String outFilePath)
//outFilePath是存放HTML檔案的路徑
//在程式前面有宣告成outFilePath=@"\SD Card\research\html\administration.htm";
//那個路徑是PDA裡面的路徑
//小弟開發的是SmartDeviceApplication專案
{
Regex regex;
Match m;
regex = new Regex(
@"\b"">\b.*\b</a>",
RegexOptions.IgnoreCase
| RegexOptions.CultureInvariant
| RegexOptions.IgnorePatternWhitespace
| RegexOptions.Compiled
);
for (m = regex.Match(outFilePath); m.Success; m = m.NextMatch())
{
MessageBox.Show("Found href " + m.Groups[1] + " at "
+ m.Groups[1].Index);
}
}
麻煩各位大大幫我看看是哪裡有問題
微軟MSDN那裡小弟實在是看不懂
其他大大回PO的方法小弟去看看
真想不到有這麼多篇回PO
還以為我的問題只會獲得一個推文就沒了
真感謝每位在回文及推文中幫忙的大大
※ 引述《terrytai (Terry)》之銘言:
: 如果要從一個html檔案中找出特定的字串
: 整個原始碼抓出來的字串設程string tempCode
: 已經知道我想要的字串前面一定有>
: 後面一定有</a>
: 如何把html檔案中每個符合這個條件的字串
: 都抓出來另存成新的字串?
: 那麼我是不是就先設了string StartString = ">";
: string EndString = "</a>";
: 然後呢?
: 怎麼去找出介於StartString跟EndString中間的每個字串?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.175.96.22
→ abgne:我是先用正規表示法找出每一串<a..>..</a>後 再去找字串的 02/19 16:53
推 liunate:for中的inputString是你想要進去搜尋的字串嗎? 02/19 16:5
→ terrytai:liunate大大~for裡面有筆誤~已更正 02/19 17:05
※ 編輯: terrytai 來自: 218.175.96.22 (02/19 17:25)
推 liunate:如果complie沒問題 輸出code也是照範例 那麼 02/19 17:32
→ liunate:真相永遠只有一個 妳的regex語法對嗎? =P 02/19 17:33