【发布时间】:2014-07-23 22:51:07
【问题描述】:
这些是我的一些测试用例:
{APIDETAILS=FOO, BAR, SING, RUN, OP1/OPSUB1/RESULT=SOMETHING, OP1/OPSUB2/RESULT=SOMETHING, OP2/OPSUB1/RESULT=SOMETHING}
{APIDETAILS=FOO, OP1/OPSUB1/RESULT=SOMETHING, OP1/OPSUB2/RESULT=SOMETHING, OP2/OPSUB1/RESULT=SOMETHING}
{APIDETAILS=FOO, O.P.OP3/OPSUB1/RESULT=SOMETHING, OP1/OPSUB2/RESULT=SOMETHING, OP2/OPSUB1/RESULT=SOMETHING}
{APIDETAILS=FOO, OP.PO.OP4/OPSUB1/RESULT=SOMETHING, OP1/OPSUB2/RESULT=SOMETHING, OP2/OPSUB1/RESULT=SOMETHING}
{OP1/OPSUB1/RESULT=SOMETHING, OP1/OPSUB2/RESULT=SOMETHING, OP2/OPSUB1/RESULT=SOMETHING, APIDETAILS=FOO}
{OP1/OPSUB1/RESULT=SOMETHING, OP1/OPSUB2/RESULT=SOMETHING, OP2/OPSUB1/RESULT=SOMETHING, APIDETAILS=FOO, SING, BAR}
{OP1/OPSUB1/RESULT=SOMETHING, OP1/OPSUB2/RESULT=SOMETHING, OP2/OPSUB1/RESULT=SOMETHING, APIDETAILS=FOO, BAR, SING
注意: '}' 在最后一行故意遗漏。
我要匹配的内容: APIDETAILS 后面的所有内容,但直到 APIDETAILS 结束。如果没有明确定义则结束(寻找上述不同场景的测试用例)
我想出的正则表达式:
(?:APIDETAILS=)(.*?)(?:}|\/|$)
我能匹配的:
- FOO、BAR、SING、RUN、OP1
- FOO,OP1
- FOO,O.P.OP3
- FOO,OP.PO.OP4
- FOO
- FOO、SING、BAR
- Foo,BAR,SING
问题:如何消除上述匹配 1、2、3、4 中的一些噪音并最终只得到以下匹配?
我需要匹配的内容:
- Foo,BAR,SING,RUN
- FOO
- FOO
- FOO
- FOO
- FOO、SING、BAR
- Foo,BAR,SING
【问题讨论】:
标签: regex regex-negation regex-greedy