我有这个数据
|-> 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)/)
但我遗漏了一些内容,因为它匹配所有网址。
感谢任何帮助。
答案 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)#">
<强>解释强>
[^$]+\/(en|fr)\/
- 匹配任何不是[^$]+
的字符的1次出现。基本上,我们只是使用此end-of-the-string
- 现在这将匹配字符串末尾\/(en|fr)\/
所包围的en
或fr
的第一次出现(由于回溯) 或者,您只需撰写\/(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