我正在尝试在自由文本中识别街角。
我有一个街道列表,我正在寻找一个给出以下文本的正则表达式
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个单词。(我没有超过五个字的街道名称)
但我什至找不到匹配一定数量单词的方法
如果我尝试
scala> val corner = """.*((?:\w+\b+){2}).*""".r
scala> val corner(c) = "word1 word2 word3"
根本不匹配...
(我没有使用 \s ,因为我想考虑 ,;:. 等作为单词分隔符)
--
感谢 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 "
我唯一的问题是,我希望 a 位于“圣约翰街”,而不仅仅是“街道”。默认情况下不应该是渴望的吗?