作者alpho (阿否)
看板RegExp
標題[問題] 找第一個</b>前的數字
時間Mon Jan 22 11:17:01 2018
String ss="
<TR><TH scope="row" valign="top" align="left" width="10%" nowrap>Appl.
No.:
</TH><TD align="left" width="90%">
<b> 08/940,685</b></TD></TR>
<TR><TH scope="row" valign="top" align="left" width="10%">Filed:
</TH><TD align="left" width="90%">
<b>September 30, 1997</b></TD></TR>
</TABLE>
...
"
我希望得到的是"940,685",從"Appl. No"開始
由於中間有換行 我用
str = "" + new Regex(@"Appl. No.:[^*]*?\/(.*)?(</b>)",
RegexOptions.IgnoreCase).Match(ss).Groups[1];
去搜尋,從測試網站
http://regexstorm.net/tester 來看應該是正確的。
不過用C#實際輸出:console.writeline(str);
會變成整個ss字串一起出來..,如果改成groups[2] 又能正常輸出</b>的結果出來
求解..
語言:C#
環境:visual studio 2017
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.231.168.220
※ 文章網址: https://www.ptt.cc/bbs/RegExp/M.1516591026.A.6A4.html
※ 編輯: alpho (36.231.168.220), 01/22/2018 11:17:48
※ 編輯: alpho (36.231.168.220), 01/22/2018 11:18:10
推 art1: 看不懂你真正想要的是什麼,到底是只要<\b>之前的數字就好 01/22 19:25
→ art1: 還是連前面的Appl. No.: <TH>....<b> 08/ 都要 01/22 19:26
推 art1: 如果只要數字就好,(<\b>)的()要去掉 01/22 19:30
→ art1: 然後我在你給的網站測試,貼上你的資料跟規則,找不到東西 01/22 19:31
→ art1: 把規則改成 Appl..\nNo.:[^*]*?\/(.*)?</b> 才是你要的結果 01/22 19:33
thx 求的就是那個數字
然後大概是被換行了,appl那不換行的話我的規則是可行的。
後面的(\b)只是另加個group來做測試 一樣用程式去讀然後輸出 結果g2是正常的這樣 就是group1會有問題
※ 編輯: alpho (36.231.168.220), 01/22/2018 20:53:05
推 art1: 我看書上是寫 Groups[0] 後面加上.value取得捕捉到的文字 01/22 22:31
→ art1: Groups[0]是比對成功的文字,Groups[1]才是捕捉分組的內容 01/22 22:32
推 soem: 隨手試了一下,沒辦法重現你的問題…… 02/09 01:50