1. 程式人生 > 其它 >正則匹配以除了開頭和結尾要有個大寫_27.Google analytics 中的 正則表示式

正則匹配以除了開頭和結尾要有個大寫_27.Google analytics 中的 正則表示式

技術標籤:正則匹配以除了開頭和結尾要有個大寫

餐卡如下文章:

GA正則表示式regex終極攻略 - Damon Analytics​damonanalytics.com 06fd1333b910e067beba81db167eab72.png https://support.google.com/analytics/answer/1034324?hl=en&ref_topic=1034375​support.google.com

GA中總共有13中正則表示式符號,包含了大多數常見的正則表示式。
其中有一些你基本上用不到,但是有部分你可能需要日常使用。

豎線(|)

豎線是最簡單的,它代表或(or)

一個例子:

f99b062ff4a39a1ab97e6a1ca3541bb5.png

在這個案例中,我試著匹配兩個頁面,/ebooks/ 和 /tools/ 。

實際上這裡只要url中包含字串 /ebooks/ 或 /tools/ 都會被篩選出來,例如 /ebooks/Harry-Potter-and-the-Order-of-the-Phoenix 和/tools/hammer 。下面會有如何用正則更準確的匹配url。

點(.)

點匹配任意字元,它更像是一個萬用字元。

一個例子:

.ide 可以匹配 wide、guide,但是它不能匹配 ide。

星號(*)

它表示前一個字串的0個或多個。

一個例子:

damo*n 可以匹配damn、damon、damoon、damooon

點星號(.*)

這是一個強大的組合,因為它代表了任意字串組合。

.* matches everything!

例如如果你要匹配所有漫畫書目錄下的頁面:

try:/comic-books/.*

注意:這個表示式的解析時間很長,因此不要濫用它。

反斜槓()

前面介紹了這麼多符號,如果你要匹配這些符號呢,例如你要匹配”235.25.128.2″這個IP怎麼辦呢?

點(.)是匹配任意字元的,怎麼去匹配“.”呢?

235.25.128 即可,相當於反斜槓()是告訴機器,你要把我後面的字元當做普通字元處理。

上標(^)

它表示一段字串的開頭

^book 匹配 books,bookworm,bookcase……

美元符號($)

它表示一段字串的結尾

book$ 匹配 buybook,sellbook,storybook……

問號(?)

星號(*)代表前一個字元的0個或多個,那麼問號(?)代表的是前一個字元的0個或1個。

mar?ks 匹配mars和marks

括號(())

假設你有三個目錄列表:

  • /products/men/shirts/
  • /products/women/shirts/
  • /products/children/shirts/

你可以粗暴的應用 .*

^/products/.*/shirts/$

它表示以/products/開頭,/shirts/結尾的所有字串(好好溫習一下之前的知識)

但是這樣更加精確:

/products/(men|women|children)/shirts/

方括號([])

方括號([])幫助更快的構建列表

r[aei]d 匹配rad、red、rid

短橫線(-)

它幫助建立更高階的列表,如純數字,字母列表,通常與方括號([])搭配使用:

[0-9]

  • [a-z] 匹配所有單個小寫字母
  • [A-Z] 匹配所有單個大寫字母
  • [0-9] 匹配所有個位數字,0到9
  • [a-zA-Z0-9] 匹配任何單個數字或字母

例如你有這樣幾款產品,它們的SKU分別是:

  • 11002
  • 11003
  • 11004
  • 11005

1100[2-5]可以匹配以上4款產品

加號(+)

加號(+)表示前一個字元的一個或多個。

bo+k 匹配bok,book,boook

花括號({})

the last one,you made it!

{1,2} 表示前一個“item”至少一次,並且不超過兩次

{2}表示前一個“item”重複兩次

12[0-9]{3} 匹配12000到12999的自然數。


問題:正則表示式中的^什麼時候表示非,什麼時候表示表示式的首部匹配?

回到:在開頭表示開始,在[]之間表示非


問題:正則表示式-- (.*?) 或 (.*+)

後邊多一個?表示懶惰模式。
必須跟在*或者+後邊用
如:<img src="test.jpg" width="60px" height="80px"/>
如果用正則匹配src中內容非懶惰模式匹配
src=".*"
匹配結果是:src="test.jpg" width="60px" height="80px"
意思是從="往後匹配,直到最後一個"匹配結束
 
懶惰模式正則:
src=".*?"
結果:src="test.jpg"
因為匹配到第一個"就結束了一次匹配。不會繼續向後匹配。因為他懶惰嘛。
 
.表示除n之外的任意字元
*表示匹配0-無窮
————————————————
版權宣告:本文為CSDN博主「Scarlett·S」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連結及本宣告。
原文連結:https://blog.csdn.net/qq_37503890/java/article/details/94610002

問題:(^|&)?(w+)=([^&]+)(&|$)? 正則表示式 幫忙解釋一下什麼意思?

(^|&)? 匹配^或者& 放到分組中,其中分組出現次數最少零次,最多一次

(w+)匹配一個字元,最少一個,最任意個並放到分組中

=單純的匹配一個等號

([^&]+) 不包含&(^在這裡開頭代表不包含的意思) 匹配最少一個次,最多人一次並放到分組中

(&|$)? 匹配&或者¥ 放到分組中,其中分組出現次數最少零次,最多一次

總的來說就是匹配一個 開頭出現^、& 結尾出現&、$的字串 其中開頭和結尾這些字串可不出現,等號左側字元可以出現一次或者更多次,右側的字元除&以外可以出現一次或者更多次

大概就是這個意思!


捕獲組:

/men/(.*?)/代表:
/men/shirts/
/men/pants/
/men/shoes/


/products?.*category=([^&]+)代表:
/products?sort=price&category=memory
/products?sort=discount&category=printers
/products?sort=date&category=laptops

D+(BS)d+ 解釋:
D (non-numeric character)
+ (one or more times)
(BS) (character code for beach sandal)
d (numeric character)
+ (one or more times)

(MN|WM)BSd+解釋:
(MN OR WM)
BS (character code for beach sandals)
d (numeric character)
+ (one or more times)