首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regex重复模式和非匹配组

Regex重复模式和非匹配组
EN

Stack Overflow用户
提问于 2014-06-03 18:07:35
回答 1查看 544关注 0票数 0

好吧,我有问题要重复工作,更别说我想要的工作方式了.

我将带来一个包含以下信息的字符串

代码语言:javascript
复制
NETWORK;PASS;1;THIS TEXT|CAN BE|RANDOM|WITH|PIPE|SEPERATORS;\r

到目前为止我拥有的

代码语言:javascript
复制
(?:NETWORK;.*;(?:0|1);)([^|]*)

这就让我找到了第一个匹配的块

代码语言:javascript
复制
THIS TEXT

我要做的是设置它,这样我就可以编程地指定要匹配的块。与管道分开的文本将有3-7“块”,视情况而定,我可能需要匹配其中的任何一个,但一次只能匹配一个。

我想过要复制

代码语言:javascript
复制
([^|]*)

并且添加一个非匹配的操作符,除了一个,但是如果我复制这个组,我似乎不能让它匹配任何东西,我也不能让重复操作符在这个组上工作。

我有点迷茫,所以如果需要澄清的话,这可能没有什么意义,我会根据要求提供。任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-03 18:14:37

为什么不直接在管道符号上拆分THIS TEXT|CAN BE|RANDOM|WITH|PIPE|SEPERATORS呢?比动态生成的正则表达式容易得多。

但是,如果您真的想生成正则表达式:

  1. (?:NETWORK;.*;(?:0|1);)开始
  2. 要获得nth元素(从0索引),添加(?:[^|]+[|]){n} (用要跳过的数字替换n ),然后是([^|]+)

示例:

代码语言:javascript
复制
(?:NETWORK;.*;(?:0|1);)(?:[^|]+[|]){3}([^|]+)

Debuggex Demo

在您的示例中匹配WITH这是一个regex101演示。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24022045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档