在IIS Url Rewrite(Microsoft)中使用regex
我正在尝试编写一个正则表达式,它将仅在以下任何一个中捕获companyname / company-name:
GET-参与/企业/公司名称2
GET-参与/企业/公司名称
GET-参与/公司/公司名称-5
GET-参与/企业/公司名称
所以要清楚我想捕获一个可变公司名称,可能有也可能没有尾随-[0-9]
但我不想要跟踪-[0-9]
我有以下内容,但它不正确,因为它包含-2
时存在
get-involved/companies/((.*)|((.*)(-[0-9])))
答案 0 :(得分:0)
这个答案适用于JS或PHP,但正如@Tom Zych所注意到的,一些小规格可能与IIS Url Rewrite有所不同,我不会使用:所以它已经完成了给你检查。
那说,你可以使用以下正则表达式:
^get-involved/companies/([^-]*)-?([^-]*)?(?:-[0-9])$
然后使用以下替换:
$1$2
答案 1 :(得分:0)
这应该可以解决问题:
String nomeDb = "Demo2";
try {
System.out.println("Before connect OServerAdmin");
OServerAdmin serverAdmin = new OServerAdmin("remote:128.199.xxx.xxx/"+nomeDb).connect("admin","password");
System.out.println("After connect");
if(serverAdmin.existsDatabase()){ // il db esiste
System.out.println("in if");
//connessione a db
OrientGraph g = new OrientGraph("remote:128.199.xxx.xxx/"+nomeDb);
DijkstraExcl d = new DijkstraExcl(g, "Path", "distance");
Set<String> ex =new HashSet<String>();
//------------------------------------------------
Vertex start = g.getVertex("#12:6");
Vertex end = g.getVertex("#12:11");
ex.add("#13:0");
Direction direction = Direction.OUT;
System.out.println(d.getPath(start,end,direction,ex));
System.out.println(d.getPathString(start,end,direction,ex));
System.out.println(d.getWeight(start,end,direction,ex));
//------------------------------------------------
//chiude db
g.shutdown();
}
else{
System.out.println("Il database '"+ nomeDb + "' non esiste");
}
serverAdmin.close();
} catch (IOException e) {
e.printStackTrace();
}
基本上,主要思想是在非捕获组中使用交替。第一个替代匹配任何以 - [0-9]结尾的短语,使用正向前瞻,第二个匹配任何东西,直到它到达单词边界(或者你可以使用字符串锚点结束)。
您可以使用regex101
进行测试答案 2 :(得分:0)
您可以简单地指定连字符需要后跟字母。
get-involved/companies/([^/-]+(-[a-z][^/-]+)*)
如果您的公司名称如3com
,则无法正常使用;在这种情况下,可能会更详细的要求更新您的问题。