簡體   English   中英

正則表達式Ruby-字符串后沒有“ /”

[英]Regex Ruby - String not followed by a “/”

我需要匹配一個包含2個單詞vendor_tracks或shop_types中任何一個的url路徑,但是商店類型后應跟一個'/'

我目前的REGEX是

//(vendor_tracks | shop_types)/

,但如果包含shop_types / 22,則此匹配

我需要我的Regex匹配以下內容:

/ shop_types] Q%5Btrack_department

但不是以下網址

/ shop_types / 27 / list_pinned_vendors

我的當前人接受兩個,而我需要它只接受第一個。 我嘗試了許多不同的方法來排除“ shop_types”后跟/的情況,但總是會出現轉義的反斜杠錯誤。 有什么解決辦法嗎? 或替代的REGEX

您可以使用環視來創建自定義限制

>> str1 = '/shop_types?q%5Btrack_department'
=> "/shop_types?q%5Btrack_department"
>> str2 = '/shop_types/27/list_pinned_vendors'
=> "/shop_types/27/list_pinned_vendors"

>> str1.match?(/shop_types(?!\/)/)
=> true
>> str2.match?(/shop_types(?!\/)/)
=> false

這里(?!\\/)是否定的超前表示,表示/字符在shop_types之后不能是立即字符

請注意 ,字符串結尾也將滿足此條件,因為這意味着在shop_types之后沒有/字符


我嘗試了多種方法來排除“ /”,但總是出現反斜杠錯誤

您可以使用%r定義帶有備用定界符的正則表達式

# here the condition has also been changed
# restriction is that / shouldn't occur anywhere after matching shop_types
>> str1.match?(%r{shop_types(?!.*/)})
=> true
>> str2.match?(%r{shop_types(?!.*/)})
=> false

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM