Python 正则表达式,用于过滤最后一个斜杠后带有文字点的URL
我需要正则表达式来识别最后一个正斜杠之后的URLPython 正则表达式,用于过滤最后一个斜杠后带有文字点的URL,python,regex,Python,Regex,我需要正则表达式来识别最后一个正斜杠之后的URL 有一个文字点,例如 http://www.example.es/cat1/cat2/some-example_DH148439#.Rh1-js_4 http://www.example.es/cat1/cat2/cat3 没有文字点,例如 http://www.example.es/cat1/cat2/some-example_DH148439#.Rh1-js_4 http://www.example.es/cat1/cat2/cat3
- 有一个文字点,例如
http://www.example.es/cat1/cat2/some-example_DH148439#.Rh1-js_4
http://www.example.es/cat1/cat2/cat3
- 没有文字点,例如
http://www.example.es/cat1/cat2/some-example_DH148439#.Rh1-js_4
http://www.example.es/cat1/cat2/cat3
到目前为止,我只找到了正则表达式来匹配最后一个正斜杠之前或之后的所有内容:
[^/]+$
以及最后一个斜杠之后的文本点之后的所有内容,对于错误的作业,使用正则表达式匹配URL是错误的工具。您可以使用(或在python3中)以非常类似python的方式完成此工作:
>>> from urlparse import urlparse
>>> urlparse('http://www.example.es/cat1/cat2/some-example_DH148439#.Rh1-js_4')
ParseResult(scheme='http', netloc='www.example.es', path='/cat1/cat2/some-example_DH148439', params='', query='', fragment='.Rh1-js_4')
>>> urlparse('http://www.example.es/cat1/cat2/cat3')
ParseResult(scheme='http', netloc='www.example.es', path='/cat1/cat2/cat3', params='', query='', fragment='')
如果你真的想要一个正则表达式,下面的正则表达式就是一个可以回答你问题的例子:
import re
>>> re.match(r'^[^:]+://([^.]+\.)+[^/]+/([^/]+/)+[^#]+(#.+)?$', 'http://www.example.es/cat1/cat2/some-example_DH148439#.Rh1-js_4') != None
True
>>> re.match(r'^[^:]+://([^.]+\.)+[^/]+/([^/]+/)+[^#]+(#.+)?$', 'http://www.example.es/cat1/cat2/cat3') != None
True
但我给出的正则表达式足以回答您的问题,但不是验证URL或将其拆分的好方法。我想说它唯一感兴趣的是回答你的问题
下面是正则表达式生成的自动机,以便更好地理解它:
注意你的问题,因为JL的正则表达式不匹配:
http://www.example.es/cat1/cat2/cat3
在重新阅读问题3×,您实际上是在询问以下正则表达式:
\/([^/]*)$
这将匹配您的两个示例:
http://www.example.es/cat1/cat2/some-example_DH148439#.Rh1-js_4
http://www.example.es/cat1/cat2/cat3
@jl peyret建议的只是如何匹配/
后面的一个普通点,这将生成以下自动机:
所以,无论你真正想要什么:
和往常一样,使用正则表达式匹配URL对于错误的作业来说是错误的工具。您可以使用(或在python3中)以非常类似python的方式完成此工作:
>>> from urlparse import urlparse
>>> urlparse('http://www.example.es/cat1/cat2/some-example_DH148439#.Rh1-js_4')
ParseResult(scheme='http', netloc='www.example.es', path='/cat1/cat2/some-example_DH148439', params='', query='', fragment='.Rh1-js_4')
>>> urlparse('http://www.example.es/cat1/cat2/cat3')
ParseResult(scheme='http', netloc='www.example.es', path='/cat1/cat2/cat3', params='', query='', fragment='')
如果你真的想要一个正则表达式,下面的正则表达式就是一个可以回答你问题的例子:
import re
>>> re.match(r'^[^:]+://([^.]+\.)+[^/]+/([^/]+/)+[^#]+(#.+)?$', 'http://www.example.es/cat1/cat2/some-example_DH148439#.Rh1-js_4') != None
True
>>> re.match(r'^[^:]+://([^.]+\.)+[^/]+/([^/]+/)+[^#]+(#.+)?$', 'http://www.example.es/cat1/cat2/cat3') != None
True
但我给出的正则表达式足以回答您的问题,但不是验证URL或将其拆分的好方法。我想说它唯一感兴趣的是回答你的问题
下面是正则表达式生成的自动机,以便更好地理解它:
注意你的问题,因为JL的正则表达式不匹配:
http://www.example.es/cat1/cat2/cat3
在重新阅读问题3×,您实际上是在询问以下正则表达式:
\/([^/]*)$
这将匹配您的两个示例:
http://www.example.es/cat1/cat2/some-example_DH148439#.Rh1-js_4
http://www.example.es/cat1/cat2/cat3
@jl peyret建议的只是如何匹配/
后面的一个普通点,这将生成以下自动机:
所以,无论你真正想要什么:
和往常一样,使用正则表达式匹配URL对于错误的作业来说是错误的工具。您可以使用(或在python3中)以非常类似python的方式完成此工作:
>>> from urlparse import urlparse
>>> urlparse('http://www.example.es/cat1/cat2/some-example_DH148439#.Rh1-js_4')
ParseResult(scheme='http', netloc='www.example.es', path='/cat1/cat2/some-example_DH148439', params='', query='', fragment='.Rh1-js_4')
>>> urlparse('http://www.example.es/cat1/cat2/cat3')
ParseResult(scheme='http', netloc='www.example.es', path='/cat1/cat2/cat3', params='', query='', fragment='')
如果你真的想要一个正则表达式,下面的正则表达式就是一个可以回答你问题的例子:
import re
>>> re.match(r'^[^:]+://([^.]+\.)+[^/]+/([^/]+/)+[^#]+(#.+)?$', 'http://www.example.es/cat1/cat2/some-example_DH148439#.Rh1-js_4') != None
True
>>> re.match(r'^[^:]+://([^.]+\.)+[^/]+/([^/]+/)+[^#]+(#.+)?$', 'http://www.example.es/cat1/cat2/cat3') != None
True
但我给出的正则表达式足以回答您的问题,但不是验证URL或将其拆分的好方法。我想说它唯一感兴趣的是回答你的问题
下面是正则表达式生成的自动机,以便更好地理解它:
注意你的问题,因为JL的正则表达式不匹配:
http://www.example.es/cat1/cat2/cat3
在重新阅读问题3×,您实际上是在询问以下正则表达式:
\/([^/]*)$
这将匹配您的两个示例:
http://www.example.es/cat1/cat2/some-example_DH148439#.Rh1-js_4
http://www.example.es/cat1/cat2/cat3
@jl peyret建议的只是如何匹配/
后面的一个普通点,这将生成以下自动机:
所以,无论你真正想要什么:
和往常一样,使用正则表达式匹配URL对于错误的作业来说是错误的工具。您可以使用(或在python3中)以非常类似python的方式完成此工作:
>>> from urlparse import urlparse
>>> urlparse('http://www.example.es/cat1/cat2/some-example_DH148439#.Rh1-js_4')
ParseResult(scheme='http', netloc='www.example.es', path='/cat1/cat2/some-example_DH148439', params='', query='', fragment='.Rh1-js_4')
>>> urlparse('http://www.example.es/cat1/cat2/cat3')
ParseResult(scheme='http', netloc='www.example.es', path='/cat1/cat2/cat3', params='', query='', fragment='')
如果你真的想要一个正则表达式,下面的正则表达式就是一个可以回答你问题的例子:
import re
>>> re.match(r'^[^:]+://([^.]+\.)+[^/]+/([^/]+/)+[^#]+(#.+)?$', 'http://www.example.es/cat1/cat2/some-example_DH148439#.Rh1-js_4') != None
True
>>> re.match(r'^[^:]+://([^.]+\.)+[^/]+/([^/]+/)+[^#]+(#.+)?$', 'http://www.example.es/cat1/cat2/cat3') != None
True
但我给出的正则表达式足以回答您的问题,但不是验证URL或将其拆分的好方法。我想说它唯一感兴趣的是回答你的问题
下面是正则表达式生成的自动机,以便更好地理解它:
注意你的问题,因为JL的正则表达式不匹配:
http://www.example.es/cat1/cat2/cat3
在重新阅读问题3×,您实际上是在询问以下正则表达式:
\/([^/]*)$
这将匹配您的两个示例:
http://www.example.es/cat1/cat2/some-example_DH148439#.Rh1-js_4
http://www.example.es/cat1/cat2/cat3
@jl peyret建议的只是如何匹配/
后面的一个普通点,这将生成以下自动机:
所以,无论你真正想要什么: