我的输入字符串如下所示:
&hello=HI1&op=1h23&hello=&op=&hello=HI3&op=&hello=HI4&op=OP4
如果你好有文字,我喜欢要捕获的数据。 op参数是可选的,可能有也可能没有值。在上面的字符串中,我想要以下输出(每行将作为一个单独的值存储在数组中):
hello=HI&op=1h23
hello=HI3&op=
hello=HI4&op=OP4
我得到的主要是工作,但问题是如果op在单词“hello”中有任何字母的值,那么op的剩余部分将被捕获。正如您在上面的示例字符串中所看到的,第一个op值是1h23,在h之后,值23不被捕获。
https://regex101.com/r/Er0kEo/2
我试过了:
/&hello=[A-z 0-9]+&op=[^&hello]*/gi
这主要有效,除非op的值包含单词“hello”中的任何字母。我也试过了:
/&hello=[A-z 0-9]+&op=.+?(?=&hello)/gi
仅捕获第一个输入。还试过(?!& hello) - 稍微好些但不能捕获最后一个输入。尝试使用\ b并且没有做得很远,也没有做过& hello $。
我觉得自己错过了一些不过5小时的小事,但我还是打败了。
答案 0 :(得分:0)
使用正则表达式/&(hello=\w*&op=\w*)/
,将提供以下必需的匹配项:
hello=HI&op=1h23
hello=HI3&op=
hello=HI4&op=OP4
JavaScript演示
var pattern = /&(hello=\w*&op=\w*)/g;
var str = "&hello=HI1&op=1h23&hello=&op=&hello=HI3&op=&hello=HI4&op=OP4";
var result;
while (result = pattern.exec(str)) {
console.log(result[1]);
}

答案 1 :(得分:0)
尝试使用以下正则表达式(使用positive look-ahead):
var entity = new DynamicTableEntity("tomtest", "pk"); //PK, RK
entity.Properties.Add("EndTime", new EntityProperty(DateTime.UtcNow)); //properties want to add
var mergeOperation = TableOperation.InsertOrMerge(entity);
table.Execute(mergeOperation);
<强> DEMO 强>
<强>的JavaScript 强>
hello=[a-z0-9]+&op=[^&]*
&#13;
答案 2 :(得分:0)
/hello=[a-z\s0-9]+&op=[a-z0-9]*/gi
结果
Match 1
Full match 1-18 `hello=HI1&op=1h23`
Match 2
Full match 30-43 `hello=HI3&op=`
Match 3
Full match 44-60 `hello=HI4&op=OP4`