我希望能够匹配特定的字符序列,从特定的子字符串开始,以特定的子字符串结束.如果在一条线上只有一个匹配的实例,那么我的正向前瞻性正则表达式会起作用,但如果一条线上应该有多个匹配则不行.我理解这是因为(.+)捕获所有内容,直到找到最后一个正向前瞻表达式.如果它能捕获所有内容直到找到第一个表达式,那就太好了.
这是我的正则表达式尝试:
@@FOO\[(.*)(?=~~)~~(.*)(?=\]@@)\]@@
Run Code Online (Sandbox Code Playgroud)
样本输入:
@@FOO[abc~~hi]@@ @@FOO[def~~hey]@@
Run Code Online (Sandbox Code Playgroud)
期望的输出:2个匹配,每个具有2个匹配的组(abc,hi)和(def,嘿).
实际输出:1与2组比赛(abc ~~ hi)@@ @@ FOO [def,嘿]
有没有办法获得所需的输出?
提前致谢!
使用问号,它将尽可能少地匹配.
@@FOO\[(.*?)(?=~~)~~(.*?)(?=\]@@)\]@@
Run Code Online (Sandbox Code Playgroud)
这个也有效,但不是那么严格,但更容易阅读
@@FOO\[(.*?)~~(.*?)\]@@
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3691 次 |
| 最近记录: |