我有一个正则表达式,用于匹配特定的语法(n次),在每一次事件之后都有一个管道(\),但最后的事件除外。目前,我的模式是类似于(pattern)\|{3}的模式,但这并不能满足没有尾随管道的要求。我是否可以在不重复(pattern)的情况下完成这一任务?我能想到的最好的解决方案是(pattern)\|{2}(pattern)。
有效示例:
*401-401 2-10
无效示例:
*\x{e76f}401-10
(pattern)的值与回答我的具体问题无关,但为了完整起见,它现在的形式是:(?:(?:((\*)|(\[[\w+ ]\-[\w+ ]\])|(\d+)))\|){3}。
编辑
这是在.NET和JavaScript中使用的。
发布于 2014-12-19 01:04:10
如果要匹配整个输入字符串,有一个简单的解决方案:
(?:pattern(?:\|(?!$)|$)){3}这意味着:匹配您的模式,然后:
\|(?!$):没有后面跟着字符串末尾的管道$字符串的结尾三次。
对于您的特定模式,这将是:
^(?:(?:((\*)|(\[[\w+ ]\-[\w+ ]\])|(\d+)))(?:\|(?!$)|$)){3}我还以^作为模式的前缀,因为这个解决方案只有在与整个输入匹配时才能工作。
https://stackoverflow.com/questions/27558321
复制相似问题