簡體   English   中英

正則表達式以匹配一個或多個與另一正則表達式匹配的模式

[英]Regular expression to match one or more patterns matching another regular expression

我在Django URL配置中使用正則表達式。 我有以下正則表達式:

url(r'^myapp/prices/?([X]{1}[A-Z0-9]{3}:[A-Z0-9]{1}[A-Z09.-]{1,4})/?([0-9]{0,3})/?$', views.prices, name='prices'),

這與以下網址匹配:

  • htpp://127.0.0.1/myapp/prices/XNAS:GOOG / 1
  • htpp://127.0.0.1/myapp/prices/XNAS:GOOG
  • htpp://127.0.0.1/myapp/prices/XNAS:FB / 10

我想在url模式中修改我的regex模式,以便可以匹配上面的字符串以及下面的字符串:

htpp://127.0.0.1/myapp/prices/XNAS:GOOG + XNAS:TSLA + XNAS:FB / 1

本質上,我希望原始模式至少匹配一次,如果不止一次匹配,則該模式的出現應以'+'號分隔。

我將如何使用正則表達式語法(Python)來表達這一點

repeatable = r'[X]{1}[A-Z0-9]{3}:[A-Z0-9]{1}[A-Z09.-]{1,4}'
url_regex = r'^myapp/prices/?(' + re.escape(repeatable) + r')(\+' + re.escape(repeatable) + r')*/?([0-9]{0,3})/?$'

url(url_regex, views.prices, name='prices')

但是我認為這更加復雜:

url(r'^myapp/prices/?([X]{1}[A-Z0-9]{3}:[A-Z0-9]{1}[A-Z09.-]{1,4})(\+?[X]{1}[A-Z0-9]{3}:[A-Z0-9]{1}[A-Z09.-]{1,4})*/?([0-9]{0,3})/?$', views.prices, name='prices'),

暫無
暫無

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

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