gpt4 book ai didi

java - Java问题的URI正则表达式

转载 作者:行者123 更新时间:2023-12-01 13:43:11 27 4
gpt4 key购买 nike

我正在尝试创建一个适用于以下情况的正则表达式:

GET://HOSTNAME1234:14159?sim=C:\sim.zip&bif=C:\bif.txt&wpt=C:\wpt.txt或者更简单地说:

获取://主机名1234:14159? sim = C:\sim.zip & bif = C:\bif.txt & wpt = C:\wpt.txt

这样:

(\w+)://(\w+)(:(\d+)\??)?((\w+)=([\/\.\\:\w]+)&? )*

我希望得到的是这样的:

0: [0,72] GET://HOSTNAME1234:14159?arg0=C:\sim.zip&arg1=C:\bif.txt&arg2=C:\wpt.txt
1: [0,3] GET
2: [6,18] HOSTNAME1234
3: [18,24] :14159
4: [19,24] 14159
5: [57,72] arg2=C:\wpt.txt
6: [57,61] arg2
7: [62,72] C:\wpt.txt

其中 6 和 7 代表我想要的,但是我没有看到“arg0”或“arg1”。我认为我在使用 +* 命令时做错了什么,但这些安排的组合似乎不起作用。

我正在使用这个工具来帮助我:http://www.regexplanet.com/advanced/java/index.html/http://fiddle.re/h9b88

最佳答案

要匹配的字符串:

GET://HOSTNAME1234:14159?arg0=C:\sim.zip&arg1=C:\bif.txt&arg2=C:\wpt.txt

尽管你真的应该使用 URL parser为此:

更新的方法(适用于完整的原始字符串)

((\w+):\/\/(\w+):(\d+)\??|([^&]*?)=([^&]*)?)

工作示例:http://regex101.com/r/pL2wV9

<小时/>

第一种方法(有效,但需要循环)

将 URL 分成两部分:

使用 (\w+):\/\/(\w+):(\d+)\?(.*$) 将 URL 分解为:http://regex101.com/r/pQ1vS9

匹配 1

  1. 获取

  2. HOSTNAME1234

  3. 14159

  4. arg0=C:\sim.zip&arg1=C:\bif.txt&arg2=C:\wpt.txt

然后在第 4 组中,捕获后使用 ([^&]*?)(?==)=?([^&]*)? 来匹配查询字符串它,并迭代它:http://regex101.com/r/bX3uM4

匹配 1

  1. arg0

  2. C:\sim.zip

比赛 2

  1. arg1

  2. C:\bif.txt

第三场比赛

  1. arg2

  2. C:\wpt.txt

<小时/>

免责声明:这是一个非常糟糕的主意,虽然我想知道是否可以实现它,但使用 URL 解析器是一种更快、更准确的路线。

关于java - Java问题的URI正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20532341/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com