![](/img/trans.png)
[英]Ruby Regex match a newline followed by anything but (3 uppercase characters followed by a pipe)
[英]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.