java查找正则表达式的哪个部分导致了匹配
我得到了以下格式的正则表达式:
((.*)Venue1(.*)) | ((.*)Venue2(.*)) | ((.*)Venue3(.*))
然后我得到了一些twitter消息,使用这个正则表达式,我发现消息中是否提到了一个地点(我知道这个方法有一些bug,但目前对我来说还不错)。然而,通过这种方式,我不知道提到的确切地点,因为我使用的是tweet.matches(regex)
。我想打破整个正则表达式,分别检查每个场馆名称的twitter消息。你认为有没有更快捷的方法来检查,是哪个长正则表达式中的场地名称导致了这场比赛
# 1 楼答案
您可以使用组。沿着this的路线可以解决旅游问题Vogella也有一些例子。谷歌搜索“java正则表达式组”会给你很多参考资料:)
# 2 楼答案
使用
(.*)Venue([123])(.*)
,然后检查第二对括号之间的内容# 3 楼答案
您可以将所有场馆放在一个组中,并获得该组的价值:
在上面的正则表达式中,匹配的场地将是第一组。(我假设您的场地只是示例,如果不是,您可以进一步简化。)
之后,您可以使用^{} :
输出:
Run this demo online here