regex - 使用正则表达式从 url 中提取查询字符串值

标签 regex

我需要从 URL 中提取一个变量,或者如果该变量不存在则获取一个空字符串。

伪代码:

String foo = "http://abcdefg.hij.klmnop.com/a/b/c.file?foo=123&zoo=panda";
String bar = "http://abcdefg.hij.klmnop.com/a/b/c.file";

当我运行我的正则表达式时,我想在第一种情况下得到 123,在第二种情况下得到空字符串。

我正在尝试用它来替换 .*?foo=(.*?)&?.* 将其替换为 $1 但当 foo= 不存在时,这不起作用。

我不能只是进行匹配,它必须是替换。

最佳答案

你可以试试这个:

[^?]+(?:\?foo=([^&]+).*)?

如果有参数并且第一个参数名为“foo”,则其值将在组#1中捕获。如果没有参数,正则表达式仍然会成功,但我无法预测当您访问捕获组时会发生什么。一些可能性:

  • 它将包含一个空字符串
  • 它将包含一个空引用,该引用将自动转换为
    • 空字符串
    • “null”一词
  • 您的应用将抛出异常,因为第 1 组没有参加比赛。

此正则表达式与您提供的示例字符串匹配,但如果参数列表不包含“foo”,或者“foo”不是第一个参数,则它将不起作用。假设捕获组工作正常,这些选项也可以容纳。

关于regex - 使用正则表达式从 url 中提取查询字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1225392/

相关文章:

具有正则表达式匹配的 Ruby case 语句

php - 转义某些字符不起作用

python - 正则表达式查找子字符串并替换字符并更新整个字符串

java - 在 Java 中匹配简单正则表达式的问题

java - 当包含反斜杠时,从用户输入创建正则表达式模式不起作用

Javascript + 修改字符串

css - 正则表达式并添加 HTML 标签换行和格式化

c - POSIX 正则表达式 - 括号表达式的零个或一个匹配项?

regex - 验证 10 位电话号码

python - 如何获取Python正则表达式的字符类的完整列表以快速查找特定的特殊字符?