正则表达式匹配一个没有后跟任何东西的字符串

时间:2013-06-06 08:23:46

标签: regex

我试图找出一个与下面列表中的第一个项目匹配的正则表达式序列,而不是其他两个,{Some-Folder}是可变的。

http://www.url.com/{Some-Folder}/
http://www.url.com/{Some-Folder}/thing/key/
http://www.url.com/{Some-Folder}/thing/119487302/

http://www.url.com/{Some-Folder}/{something-else}

基本上我希望能够检测出任何形式的东西:

http://www.url.com/{Some-Folder}/

http://www.url.com/{Some-Folder}

但不是

http://www.url.com/{Some-Folder}/{something-else}

到目前为止我已经

http://www.url.com/[A-Z,-]*\/^.

但这与任何事情都不匹配

4 个答案:

答案 0 :(得分:2)

http://www.url.com/[^/]+/?$

或者,在使用\Z作为文本结尾的少数解析器中

http://www.url.com/[^/]+/?\Z

答案 1 :(得分:1)

我定制了一个regex I've used for URL parsing before,这并不完美,一旦gTLD变得更有用,就需要更多的工作。无论如何,这是:

\bhttps?:\/\/[a-z0-9.-]+\.(?:[a-z]{2,4}|museum|travel)\/[^\/\s]+(?:\/\b)?

您可能希望为您正在使用的任何语言添加不区分大小写的标记。

演示:http://rubular.com/r/HyVXU30Hvp

答案 2 :(得分:0)

您可以使用以下正则表达式:
(?m)http:\/\/www\.example\.com\/[^\/]+\/?$

<强>解释

  • (?m):设置m修饰符,使^$分别匹配行的开头和结尾
  • http:\/\/www\.example\.com\/:匹配http://www.example.com/
  • [^\/]+:匹配除/以外的任何内容
  • \/?:可选地匹配/
  • $:声明行尾

<强> Online demo

答案 3 :(得分:0)

我一直在寻找这个确切问题的答案。 aaaaaa123456789的回答几乎对我有用。但$和\ Z并没有奏效。我的解决方案是:

def split_format(var1, var2):
     hour = int(var1.split(':')[0]) - int(var2.split(':')[0])
     minute = int(var1.split(':')[1]) - int(var2.split(':')[1])
     seconds = float(var1.split (':')[2]) - float(var2.split(':')[2])

time = '{} hours {} minutes {} seconds'.format(
    hour, minute, round(seconds, 2)
)

return time



def getFile(): 
prose = str(input('Please enter the file path for your text file: '))

dictionary = {}

infile = open(prose, 'r')
line_num = 1
line_num2 = 2
for line in infile:
    dictionary[line_num]=line
    line_num += 1
    line_num2 += 1

base = 1
base2 = 2
for x in dictionary:
    print(dictionary[base2],(split_format(dictionary[base2],dictionary[base])))
    base += 1
    base2 += 1


infile.close()

getFile()