RegEx查找URL中最后一次出现的字符串

时间:2017-10-16 16:13:25

标签: regex vb.net

我有这个数据

|-> http://www.example.com/fr/page-name (09:00:13)
|-> http://www.example.com/fr/page-name (09:00:19)  
|-> http://www.example.com/fr/page-name (09:01:41)
|-> http://www.example.com/en/page-name (09:02:29)

我需要从列表中的最后一个URL获取(fr|en)。在这种情况下,'en'

我正在使用.Net而且我已经尝试了负面的前瞻,我认为这是en|fr en|fr

/(en|fr)/(?!/(en|fr)/)

/(en|fr)/(?!.*?/(en|fr)/)

但我遗漏了一些内容,因为它匹配所有网址。

感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

试试这个正则表达式:

<cfquery name="ArtOrders" datasource="#application.dsn#"> SELECT * FROM Table </cfquery> <cfset xlssRegistrant = SpreadsheetNew("Registrant",true) > <cfset SpreadsheetAddRows(xlssRegistrant, ArtOrders)> <cfset col1 = {dataformat = "mm/dd/yyyy hh:mm:ss"}> <cfset SpreadsheetFormatColumns(xlssRegistrant, col1, "7-8")> <cfheader name="Content-Disposition" value="attachment;filename=SIGHTINGS.xlsx"> <cfcontent type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" variable="#spreadSheetReadBinary(xlssRegistrant)#">

Click for Demo

<强>解释

  • [^$]+\/(en|fr)\/ - 匹配任何不是[^$]+的字符的1次出现。基本上,我们只是使用此
  • 到达整个文本块的末尾
  • end-of-the-string - 现在这将匹配字符串末尾\/(en|fr)\/所包围的enfr的第一次出现(由于回溯)

或者,您只需撰写\/(en|fr)(?=\/.*$)并关闭多线标志。

所需的值出现在比赛的第1组中。

答案 1 :(得分:0)

正则表达式非常适合匹配字符串模式,但在某些情况下它可能会过度。既然您可以将String转换为URI然后获取URI的第一部分,那么我将使用该路径:

private void nextEnter (Keys key) //Also at this part.
{
    if (key == Keys.Enter) //And here.
    currentRow++;
    currentNo++;
    remain--;
    nextRow ();
}

小提琴:Live Demo