我需要在这种字符串中找到一个地方的名称(例如圣安东尼奥,但可以是任何名称)
- 圣安东尼奥的天气如何
- 明天圣安东尼奥的天气如何
- 圣安东尼奥明天天气如何
使用这个 JAVA 正则表达式:
(What's|What is|What will be) the weather( tomorrow)?( in (\D*))?
我分别得到:
开始() = 0,结束() = 33
group(0) = "What's the weather in San Antonio" group(1) = "What's" group(2) = "null" group(3) = " in San Antonio" group(4) = "San Antonio"
开始() = 0,结束() = 48
group(0) = "What will be the weather in San Antonio tomorrow" group(1) = "What will be" group(2) = "null" group(3) = " in San Antonio tomorrow" group(4) = "San Antonio tomorrow"
开始() = 0,结束() = 48
group(0) = "What will be the weather tomorrow in San Antonio" group(1) = "What will be" group(2) = " tomorrow" group(3) = " in San Antonio" group(4) = "San Antonio"
如果句子总是以城市名称本身结束,那么问题可以很容易地解决,我会寻找“in”这个词,剩下的就是城市名称。但问题是,在第 2 句中,我无法理解“明天”是否存在以及如何将其从城市名称组中删除。
对于正则表达式测试,我正在使用此页面
http://www.cis.upenn.edu/~matuszek/General/RegexTester/regex-tester.html
感谢帮助。