请你帮我正则表达式。我是新手。
我的要求是我想从以下网址中提取车辆号码(即123456789):
mysite.com/resource?slk=121&ops=rewww&from=kld&to=aop&search=things&validVehicle=sdfdsdff-sdfdf-sddf%3AVX%3ALNCX%3A123456789%3AOPW%3ALOS
我尝试了以下表达式:
[&?]{1}validVehicle[=]{1}[^&]*[%3A]{1}([^%&]+)
但它给出的结果无效。你能帮我解决这个问题。
答案 0 :(得分:1)
纯正的正则表达式解决方案:
[&?]validVehicle=[^&]*(\d{9})
或者,如果您确定它们出现在%3A
之后并且没有跟随数字:
[&?]validVehicle=[^&]*%3A(\d{9})(?!\d)
请参阅this regex demo和another regex demo。您寻求的价值在第1组。
<强>详情:
[&?]
- ?
或&
validVehicle=
- 文字子字符串[^&]*
- &
以外的任何符号,直至最后一个%3A
- 文字子字符串(\d{9})
- 第1组:9位(?!\d)
- 未跟随数字。答案 1 :(得分:0)
“结构”approach可能会使用那些“%3a”冒号作为模式的分隔符,并结合非贪婪的通配符.*
(这匹配第四个由分隔符%3a
定义的'validVehicle'字段,并假设此结构不会更改):
[&?]validVehicle=(?:.*?%3a){3}(.*?)%3a
这种方式的效用与已建议的\d{9}
模式的实用性实际上取决于您对传入数据的确切了解。这些模式肯定会匹配该分隔值的其他字段中的九位数。