Nat*_*lor 4 .net javascript regex
我有一个正则表达式,用于匹配特定语法n次,每次出现后都有一个管道(|),最后一次出现除外.目前,我的模式是沿着的(pattern)\|{3},但这不满足没有尾随管道的要求.无论如何我可以不重复地 完成这个任务(pattern)吗?我能想到的最好的解决方案是(pattern)\|{2}(pattern).
有效示例:
*| 401 | [2-10]
无效的示例:
*| 401 | [2-10] |
(pattern)对于回答我的具体问题,其价值是无关紧要的,但为了完整性,这里它的形式是:(?:(?:((\*)|(\[[\w+ ]\-[\w+ ]\])|(\d+)))\|){3}
编辑
这是在.NET和JavaScript中使用的.
如果您匹配整个输入字符串,有一个简单的解决方案:
(?:pattern(?:\|(?!$)|$)){3}
Run Code Online (Sandbox Code Playgroud)
这意味着:匹配您的模式,然后:
\|(?!$):管道后面没有字符串的末尾$字符串的结尾3次.
对于您的特定模式,这将是:
^(?:(?:((\*)|(\[[\w+ ]\-[\w+ ]\])|(\d+)))(?:\|(?!$)|$)){3}
Run Code Online (Sandbox Code Playgroud)
我也为模式添加了前缀^,因为只有当你匹配整个输入时,这个解决方案才有效.
| 归档时间: |
|
| 查看次数: |
6320 次 |
| 最近记录: |