【发布时间】:2017-02-04 14:09:37
【问题描述】:
一个小时以来,我一直在努力使用正则表达式。所以,就在这下面是我要解析的文本。
AddAgenda("Gangster's agenda",
{
TEAM_HITMAN,
TEAM_POLICE
},
{
TEAM_GANG,
TEAM_MAFIA,
TEAM_GANGSTER
})
我想从每对花括号中单独捕获议程名称。要知道的一件事是,我不知道每一对都有多少团队。
基本上,我想要这个:
Group [1]:
Gangster's agenda
Group [2]:
Group [0]: TEAM_HITMAN
Group [1]: TEAM_POLICE
Group [3]:
Group [0]: TEAM_GANG
Group [1]: TEAM_MAFIA
Group [2]: TEAM_GANGSTER
但我只是想出了这个:
AddAgenda\(\"([^"]+)\",\s*\{(\s*([\w_]+,))*
产生这个:
Group [0]:
[0]: AddAgenda("Gangster's agenda",
{
TEAM_MOB,
TEAM_POLICE,
Group [1]:
[0]: Gangster's agenda
Group [2]:
[0]:
TEAM_POLICE,
Group [3]:
[0]: TEAM_POLICE,
【问题讨论】:
-
只需编写一个解析器,它会读取输入的每一部分并提取所需的值。你试过了吗?
-
我从来没有理解过用正则表达式做这样的事情的魅力。只需编写您要解析文本的代码。为什么要让它变得不必要的复杂和难以辨认?
-
@nhouser9 我认为问题在于人们发现了正则表达式,然后假设它是处理文本的唯一工具。你知道,everything looks like a nail.
-
从某种意义上说,这只是出于好奇。我想知道是否有可能只用一个正则表达式来实现这一点。
标签: java regex regex-group