我正在尋找的正則表達式可以匹配這兩個行後:可選匹配的空間
foo/bar
foo/bar baz
和捕獲foo
,bar
和baz
到單獨的比賽組。
我這個正則表達式的嘗試:
^([^\/]+)\/([^\/#]+)? (\w+)$
我正在尋找的正則表達式可以匹配這兩個行後:可選匹配的空間
foo/bar
foo/bar baz
和捕獲foo
,bar
和baz
到單獨的比賽組。
我這個正則表達式的嘗試:
^([^\/]+)\/([^\/#]+)? (\w+)$
您可以使用下面的正則表達式
^(\w+)\/(\w+)\s*(\w+)?$
^
:啓動錨(\w+)
:匹配一個或多個單詞字符(字母,數字和下劃線),並將它們添加到捕獲組\/
:匹配正斜槓\s*
:匹配任何數目的空格(\w+)?
:可選的字母數字+下劃線比賽$
:錨結束這裏的demo上RegEx101.com。
這將在其中可以通過$1
,字/
後在第二組 - $2
和可選字在$3
訪問的第一捕獲組/
之前匹配第一個字。
如果有其它字符比\w
即[a-zA-Z0-9_]
,您可以使用下面的正則表達式
^([^\/]+)\/(\S+)\s*(\S+)?$
[^\/]+
將匹配除了/
一個或多個字符。 \S+
將匹配一個或多個非空格字符。
這是一個超小點,但對於那些想知道正則表達式的每個組件的人來說,這是一個更直觀的改進。請考慮將'\ s *'更改爲'\ s?'。搜索「0到無限」空格是不必要的,因爲提供的樣本字符串中不會有多個空格。 '\ s?'從字面上看0或1個空格。我相信你知道這一點,但是其他對正則表達式不熟悉的人可能不會,所以這是很好的教育資源。 – mickmackusa
嘗試使用此^([^\/]+)\/([^\/#]+)\s*(\w*)$
與g
和m
標誌。
嗯,這似乎並沒有拉'baz'到一行中的匹配組:'foo/bar baz' – bswinnerton
您使用過'gm'標誌嗎? –
@Tushar:'^([^ \ /] +)\ /([^ \ /#] +)? (\ w +)$' – bswinnerton
檢查['^(\ w +)\ /(\ w +)\ s *(\ w +)?$'](https://regex101.com/r/QoUYZB/1) – Tushar
它,@Tushar♥️。 – bswinnerton