我需要一个正则表达式将给定的URL分为两部分。
part1->域(包括协议[http或https](如果存在)。
第2部分->其余部分
这样的事情:
示例1
let url = "https://www.example.com/asdasd/123asdsd/sdasd?bar=1"
regex返回
domain = https://www.example.com
remaining path = /asdasd/123asdsd/sdasd?bar=1
示例2
let url = "www.example.com/asdasd/123asdsd/sdasd?bar=1"
regex返回
domain = www.example.com
remaining path = /asdasd/123asdsd/sdasd?bar=1
示例3
let url = "example.com/asdasd/123asdsd/sdasd?bar=1"
regex返回
domain = example.com
remaining path = /asdasd/123asdsd/sdasd?bar=1
示例4
let url = "http://example.com"
regex返回
domain = http://example.com
remaining path = null
答案 0 :(得分:1)
我建议使用URL interface而不是正则表达式。尽管它无法处理示例2和3,但它可以拉出您需要的所有位。
来自MDN:
URL接口用于解析,构造,规范化和编码URL。它通过提供允许您轻松阅读和修改URL组件的属性来工作。通常,通过在调用URL的构造函数时将URL指定为字符串或提供相对URL和基本URL来创建新的URL对象。然后,您可以轻松地读取URL的解析组件或对URL进行更改。
满足您要求的示例
$Prids = get-content -Path C:\Temp\sqltest.txt
foreach ($prid in $prids){
$filterDate = [datetime]::Today.AddDays(-22)
Get-CdPac2000Problems -PId $Prid | Where-Object {$_.ClosedDate.Date -ge $filterDate} |ft PID,ClosedDate,ClosedByELID,ResponsibleGroup,ReferredDate -autosize
}
答案 1 :(得分:1)
使用URL
。
studentIdText.focusedProperty().addListener((observable, wasFocused, focused) -> {
if (!focused && !studentIdText.getText().trim().isEmpty()) {
searchStudent();
}
});
有人用URL打败了我,所以我也会发布正则表达式。
var url = new URL("https://www.example.com/asdasd/123asdsd/sdasd?bar=1");
var domain = `${url.protocol}//${url.host}`;
var path = `${url.pathname}?${url.searchParams.toString()}`;
console.log(`domain = ${domain}`)
console.log(`remaining path = ${path}`)
答案 2 :(得分:0)
这是细分的javascript版本。希望这有助于了解
//removes protocol
let regEx = /^(?:www\.)?(.*?):\/\//gim;
let url = "https://www.example.com/asdasd/123asdsd/sdasd?bar=1"
let path = url.replace(regEx, "");
console.log("path = " + path);
//removes domain extracts route
let regEx2 = /^(.*?\/)/;
if (path.match(regEx2)) {
let route = "/" + path.replace(regEx2, "");
console.log("route", route);
//extracts domain
url = path.match(regEx2);
let domainUrl = url[0].replace("/", "");
console.log("domainUrl = ", domainUrl);
}