[問題] 字串中必要但非目標的內容
看板RegExp (正規表示式 Regular Expression)作者Peruheru (還在想)時間10年前 (2014/09/04 12:02)推噓0(0推 0噓 3→)留言3則, 1人參與討論串1/1
/* 聽說註明使用的語言、環境
* 問題有可能較容易被解決...
*/
VS2010使用C#
各位好
我有如下的字串
...(前略)...
606 $2lc$aFrench fiction$xTranslations into Vietnamese.
700 1$aRoy$bClaude
702 1$a? Thi? Minh Ngue?t(trans)
801 0$atw$bKML$c20140020$gAACR2$m4
805 $aA1$bMUL$pB$zMUL(VN)$d746.434041$eL735$r478$cKML4881117
...(後略)...
?字元其實是越南文字顯示不出來
然後我想做一件事
找到700開頭的行,取出介於$a和$b中間的字(但不確定每次都會有$b,只有$a一定有)
經過程式轉換成代碼以後,存入805開頭,$e所帶著的那一串字
但$e的位置不固定,也可能根本沒有$e要自己補
不過那都是之後的事
目前是直接使用.net字串的startwith和indexof等方法分很多步撈
有想改用正規表示
試了一下
目前用 /700.{0,}\$a.{0,}\$/
可以抓出 700 1$aRoy$ 的內容
但其實我只需要 Roy 這個字而已,其他都不需要,只是搜尋的必要條件
正規表示可以做到某些東西純粹是條件,某些東西才是真正要抓出來的結果嗎?
謝謝各位
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.134.18.8
※ 文章網址: http://www.ptt.cc/bbs/RegExp/M.1409803366.A.D3A.html
※ 編輯: Peruheru (220.134.18.8), 09/04/2014 12:07:14
→
09/04 12:57, , 1F
09/04 12:57, 1F
→
09/04 12:58, , 2F
09/04 12:58, 2F
→
09/04 12:58, , 3F
09/04 12:58, 3F
感謝你的情報
/700.{0,}\$a(.{0,})\$/
現在用這個可以在從文章內的字串中單獨提出Roy
但現在有個問題
有時候700那一串會只有$a沒有$b
可能就像
700 1$aRoy
試著如果寫成 /700.{0,}\$a(.{0,})\$?/ 的話
在沒有$b時的確抓得出來Roy
可是這樣的寫法反而在抓有$b的情況時
會抓成 Roy$bClaude 這樣的內容
好像是因為可有可無的情況會抓盡量長的資料?
這...該怎麼辦orz
自己找到解法了,在精華區內的 4-9
將語法改成 /700.{0,}\$a([^\$]*)\$?/
就可以避免結果中含有我要切割的符號存在
感謝回答
※ 編輯: Peruheru (220.134.18.8), 09/04/2014 15:47:41
RegExp 近期熱門文章
PTT數位生活區 即時熱門文章