我有一個用例,我想從scala中的輸入中提取某些字符串。提取字符串與正則表達式在斯卡拉
我的輸入字符串類似:
asdwf:"ssdf", as232:"ss",ABC:"xxx",sdfsf234:"sdaf"
我想xxx
後ABC
提取。
我試圖定義一個正則表達式匹配模式:
val Pattern = """ABC:"(.*)",""".r
,但得到ABC:"xxx",sdfsf234:"sdaf"
作爲輸出字符串。
任何我不正確的做法?
謝謝。
我有一個用例,我想從scala中的輸入中提取某些字符串。提取字符串與正則表達式在斯卡拉
我的輸入字符串類似:
asdwf:"ssdf", as232:"ss",ABC:"xxx",sdfsf234:"sdaf"
我想xxx
後ABC
提取。
我試圖定義一個正則表達式匹配模式:
val Pattern = """ABC:"(.*)",""".r
,但得到ABC:"xxx",sdfsf234:"sdaf"
作爲輸出字符串。
任何我不正確的做法?
謝謝。
嘗試使用non-greedy expression,即:
val Pattern = """ABC:"(.*?)"""".r
更新:
我不是一個scala
用戶,我無法測試的代碼,但在理論上以下應更換所有值都是ABC
val res = """ asdwf:"ssdf", as232:"ss",ABC:"xxx",sdfsf234:"sdaf"""".replaceAll(""".*ABC:"(.*?)".*""", "$1")
我參加了一個速成班上scala
和正則表達式似乎工作:
它的工作!任何方式我可以提取ABC後的ABC? – ChengXY
@ChengXY我已經更新了答案,請看看。 –
你可以看看這樣
val p = """[^ :,"]+[\s]*:"[^"]*"""".r
p findAllIn """asdwf:"ssdf", as232:"ss",ABC:"xxx",sdfsf234:"sdaf""""
比賽現在,你可以得到一個所有匹配的迭代器。
您可以提取其內容是這樣
(p findAllIn """asdwf:"ssdf", as232:"ss",ABC:"xxx",sdfsf234:"sdaf"""").map(str => {
val p(key, value) = str
(key, value)
}).toMap
你輸入字符串似乎有某種格式的,你知道是哪一個?它從何而來? –