我有这种形式的表达式...
@@name<·parameters·>
...我想要一个匹配组 name 的正则表达式和 parameters .因为我有一组封闭的(和小的)值 name我更喜欢使用 for 循环来尝试所有的几个值,但是 parameters可以是任何东西……除了<·之外的任何东西和 ·> , 至极是打开和关闭参数集的顺序。
我找到了 this question我试过了...
@@(name)<·((?!(<·|·>).*))·>
...但我无法让它工作。我认为原因是排除表达式的位置和重复次数 (1) 是已知的,但在我的情况下,我想排除这两个序列中任何一个在未知长度字符串中的每次出现。
你知道怎么做吗?谢谢。
请您参考如下方法:
你的正则表达式必须是,
@@(name)<·((?:(?!<·|·>).)*)·>
负先行法。只看懂这部分(?!<·|·>).仅匹配任何字符(点)但不匹配 <·或 ·> , (?:(?!<·|·>).)*零次(星号)或更多次。
或
非贪心法。
@@(name)<·(.*?)·>
