首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用regex Java在其他已知(但可选)字符串之间查找未知子字符串

使用regex Java在其他已知(但可选)字符串之间查找未知子字符串
EN

Stack Overflow用户
提问于 2013-04-15 21:55:40
回答 1查看 123关注 0票数 0

我需要在这种字符串中找到一个地方的名称(示例中是圣安东尼奥,但可以是任何名称)。

  1. 圣安东尼奥的天气怎么样?
  2. 明天圣安东尼奥的天气如何?
  3. 明天圣安东尼奥的天气如何?

使用这个JAVA正则表达式:

代码语言:javascript
复制
(What's|What is|What will be) the weather( tomorrow)?( in (\D*))?

我分别得到:

  1. start() = 0,end() = 33 组(0)=“圣安东尼奥的天气如何”组(1)=“什么是”组(2)=“空”组(3)=“in San Antonio”组(4)= "San Antonio“
  2. start() = 0,end() = 48 组(0)=“明天圣安东尼奥的天气如何”组(1)=“将是什么”组(2)=“空”组(3)=“在圣安东尼奥明天”组(4)=“圣安东尼奥明天”。
  3. start() = 0,end() = 48 组(0)=“圣安东尼奥明天天气如何”组(1)=“将是什么”组(2)=“明天”组(3)=“在圣安东尼奥”组(4)=“圣安东尼奥”组(圣安东尼奥)

如果句子总是以城市名称本身结束,那么问题可以很容易地解决,我寻找"in“这个词,剩下的就是城市名称。但问题是,在第二句中,我无法理解“明天”是否存在,以及如何将其从城市名称组中删除。

对于regex测试,我使用这个页面

http://www.cis.upenn.edu/~matuszek/General/RegexTester/regex-tester.html

谢谢你帮忙。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-15 22:02:22

以下内容应该适用于所有测试字符串:

代码语言:javascript
复制
(What's|What is|What will be) the weather( tomorrow)?( in (\D*?)( tomorrow)?$)?

新的结果(第4组将永远是城市):

  1. 圣安东尼奥的天气怎么样? 开始()= 0,结束()= 33组(0)=“圣安东尼奥的天气如何”组(1)=“什么是”组(2)=“空”组(3)=“in San Antonio”组(4)= "San Antonio“组(5)= "null”
  2. 明天圣安东尼奥的天气如何? 开始()= 0,结束()= 48组(0)=“明天圣安东尼奥的天气如何”组(1)=“将是什么”组(2)=“空”组(3)=“在圣安东尼奥明天”组(4)=“圣安东尼奥”组(5)=“明天”
  3. 明天圣安东尼奥的天气如何? start() = 0,end() = 48组(0)=“明天圣安东尼奥的天气如何”组(1)=“将是什么”组(2)=“明天”组(3)=“in San Antonio”组(4)= "San Antonio“组(5)= "null”。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16025347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档