我輸入的字符串看起來是這樣的:正則表達式沒有得到整個串
&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值是1h23,在h之後,值23未被捕獲。
https://regex101.com/r/Er0kEo/2
我已經試過:
/&hello=[A-z 0-9]+&op=[^&hello]*/gi
這主要工作,但如果op有任何包含在單詞「你好」字母的值。我也試過:
/&hello=[A-z 0-9]+&op=.+?(?=&hello)/gi
只捕獲第一個輸入。還嘗試過(?!& hello) - 稍微好一些,但不會捕獲最後一次輸入。用\ b試過並沒有太遠,也沒有做過^ & hello $。
我覺得我錯過了一些小小的東西,但是5個小時後,我被打敗了。
這是否意味着所有的按鍵是相同的'hello'?所有值中是否存在&op?你只需要提取在'&op'之前有一些文本的文件? –
查看https://jsfiddle.net/jqu5motj/1/,是否按預期工作? –
@WiktorStribiżew:是的,那很完美!它非常簡單,有點震驚,我無法弄清楚/沒有嘗試[^&] *。謝謝! – greentea