好的,所以我有一个重复工作的问题,更不用说我希望它的工作方式......
我将带来一个包含以下信息的字符串
NETWORK;PASS;1;THIS TEXT|CAN BE|RANDOM|WITH|PIPE|SEPERATORS;\r
到目前为止我所拥有的
(?:NETWORK;.*;(?:0|1);)([^|]*)
这使我第一个匹配的块
THIS TEXT
我要做的是设置它,以便我可以以编程方式指定要匹配的块。用管道分隔的文本将包含3-7和#34;块"根据具体情况,我可能需要匹配其中任何一个,但一次只能匹配一个。
我曾考虑过复制
([^|]*)
并向除了一个之外的所有人添加一个非匹配的运算符,但是我似乎无法匹配任何内容,如果我复制该组,我也不能让重复运算符来处理该组。
我有点迷失所以如果需要澄清我可能会提出要求,这可能没有任何意义。任何帮助表示赞赏。
答案 0 :(得分:2)
为什么不在管道符号上拆分THIS TEXT|CAN BE|RANDOM|WITH|PIPE|SEPERATORS
?比动态生成的正则表达式容易得多。
但是如果你真的想要生成一个正则表达式:
(?:NETWORK;.*;(?:0|1);)
(?:[^|]+[|]){n}
(将n
替换为要跳过的数字),然后添加([^|]+)
示例:
(?:NETWORK;.*;(?:0|1);)(?:[^|]+[|]){3}([^|]+)
在您的示例中匹配WITH
。 Here's a regex101 demo.