我需要有關 REGEX 運算式的幫助(用于分析)。不知道如何處理這些要求。這是一個 URL 示例:/a.html?ref=aa&project=11&utm=bb
這個 URL 的中間應該有 &project=XX 但有可能 &project 根本就不存在..
要求 -
- 我希望正則運算式僅對特定專案 = XX 為正(例如,僅當 XX 等于 11 或 12 或 13 時),但對所有其他值(專案 = 22)為負。
- 它前面的引數(下例中的?ref)是強制性的
- 之后的任何引數 (&utm) 都是可選的。
例如 -
- 很好:/a.html?ref=aa&project=11&utm=bb
- 很好:/a.html?ref=aa&utm=bb
- 不好:/a.html?ref=aa&project=22&utm=bb
我該如何處理?
我試過這個它有點作業(但只有沒有額外的utm引數):
/a.html?ref=aa(&project=(11|12|13))?$
我試過了,但是在使用 utm 引數時它不起作用:
/a.html?ref=aa(&project=(11|12|13))?(&utm=.*)?$
謝謝伊泰
uj5u.com熱心網友回復:
您沒有說明您使用的是哪個平臺,但是如果您希望它們與大多數平臺上的文字字符匹配,則需要對正斜杠和問號進行轉義:
\/a.html\?ref=aa(&project=(11|12|13))?(&utm=.*)?$
您可能還想盡量減少utm塊中的捕獲,以防在它之后出現您不想要的其他東西:
\/a.html\?ref=aa(&project=(11|12|13))?(&utm=.*?)?$
uj5u.com熱心網友回復:
您可以使用字符類[123]將 1,2 或 3 與單個可選組匹配,并注意轉義點以逐字匹配。
\/a\.html\?ref=aa(&project=1[123])?&utm=.*$
模式匹配:
\/a\.html比賽/a.html\?ref=aa比賽?ref=aa(捕獲組&project=1[123]匹配 &project=1 然后匹配 1,2 或 3
)?關閉非捕獲組以使其可選&utm=.*$匹配 &utm= 后跟該行的其余部分
正則運算式演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/355948.html
標籤:正则表达式
上一篇:PHP正則運算式排除
下一篇:單擊按鈕時如何洗掉選項
