【发布时间】:2014-12-19 00:59:09
【问题描述】:
我有一个正则表达式,它旨在匹配特定的语法,n 次,每次出现后都有一个竖线 (|),除了最后一次出现。目前,我的模式是(pattern)\|{3},但这不满足没有尾随管道的要求。有没有我可以做到这一点无需重复(pattern)?我能想到的最佳解决方案是(pattern)\|{2}(pattern)。
有效示例:
*|401|[2-10]
无效示例:
*|401|[2-10]|
(pattern) 的值与回答我的具体问题无关,但为了完整起见,这里是当前形式:(?:(?:((\*)|(\[[\w+ ]\-[\w+ ]\])|(\d+)))\|){3}
编辑
这是在 .NET 和 JavaScript 中使用的。
【问题讨论】:
-
你能提供一个真实的例子吗?
-
再说一次,我不认为这对实际问题非常重要,但这将是一个有效输入的示例:
[1-2]|*|254 -
The best solution I can think of is (pattern)\|{2}(pattern).在我看来这是最好的解决方案——您不必关心处理不匹配数量的模式和分隔符。为了防止重复,只需使用字符串连接来构建模式。
标签: javascript .net regex