我試圖在自由文本中識別街角。scala:正則表達式用於查找x個單詞之前和x個單詞之後的某個短語
我有一個街道列表,我在尋找,鑑於以下文本
the corner of Saint John and Mac Dowell.
或
the store on Saint John and Mac Dowell.
將返回類似
(Saint John) (Mac Dowell)
正則表達式
我正在考慮像
.*((?:\w+\b+){5})and\b+((?:\w+\b+){5}).*
得到「and」前面的5個單詞和後面的5個單詞。 (我沒有超過五個字街道名稱)
但我甚至無法找到一個方法來匹配的話
如果我
scala> val corner = """.*((?:\w+\b+){2}).*""".r
scala> val corner(c) = "word1 word2 word3"
嘗試的certaing量它不符合在所有...
(我不使用\因爲我要考慮到;:等,單詞分隔符。)
-
感謝m.buettner的答案,我可以得到更接近我想要實現
現在我有:
val corner = """.*((?:\W+\w+){1,5})\W+and\W+((?:\w+\W+){1,5}).*""".r
val corner(a,b) = "the store located at Saint John street and Mac Dowell Avenue, is a great place"
a: String = " street"
b: String = "Mac Dowell Avenue, is a "
我唯一的問題是,我期望的是「位於聖約翰街道「而不是」街道「。這不是默認情況下熱切嗎?
不支持斯卡拉向前看,向後看? – Bergi