正则表达式在两个管道符号之间提取数据

时间:2014-10-09 14:15:19

标签: regex

我希望提取" 2"来自查询参数使用Regex -

http://www.example.com?param=1|2|3|4|test&param1=5|6

使用正则表达式 -

.*param=.*\|(\w+)\|.*

我得到的输出是" 4"。

我甚至试过这个无济于事 -

.*param=.*\|(.*?)\|.*

非常感谢任何帮助。

由于

3 个答案:

答案 0 :(得分:3)

你需要让第一个.*非贪婪:

param=.*?\|(\w+)\|

或使其与管道不匹配:

param=[^|]*\|(\w+)\|

答案 1 :(得分:1)

使用正则表达式,只需在?之后添加.*即可将捕获为尽可能少的字符

.*param=.*?\|(\w+)\|.*

答案 2 :(得分:1)

\|(\w+)\|

试试这个。参见演示。

http://regex101.com/r/rQ5jJ3/1