Еще одно совпадение регулярных выражений - PullRequest
0 голосов
/ 26 февраля 2020

Я занимался этим уже 4 часа, и у меня ничего не вышло, поэтому я смиренно прошу помощи

У меня есть строка со следующей структурой

a197 8101 aaa/bbb/ccc/ddd.doc

Мне нужно регулярное выражение, которое даст мне ddd.doc. Очевидно, что ddd не всегда ddd, может быть «картошка», может содержать цифры и c. В основном я хочу регулярное выражение, которое будет давать мне что угодно между последним '/' и до (включая) .do c

Редактировать: \/(.*\.html) это самое близкое, что у меня есть, но оно вернется /bbb/ccc/ddd.doc

Edit2: Я не собираюсь делиться, может быть, я ошибся. Я просто хочу соответствовать

Ответы [ 3 ]

2 голосов
/ 26 февраля 2020
import re
pattern = re.compile(r"/([^/\\]+.doc)")
print(pattern.search("a197 8101 aaa/bbb/ccc/ddd.doc").group(1))
print(pattern.search("a197 8101 aaa/bbb/ccc/potato.doc").group(1))
print(pattern.search("a197 8101 aaa/bbb/ccc/01_-2,,.3.doc").group(1))

выход:

ddd.doc
potato.doc
01_-2,,.3.doc
0 голосов
/ 26 февраля 2020
import re

string = "a197 8101 aaa/bbb/ccc/ddd.doc"
# parenthesis forms regex groups
# (group 1 matches start of line to and including /, greedily) = (^.*\/)
# (group 2 matches any character, non-greedy, until end of line) = (.*?$)
result = re.search(r'(^.*\/)(.*?$)', string)
print(result.group(0))
print(result.group(1))
print(result.group(2))

output = result.group(2)

даст:

a197 8101 aaa/bbb/ccc/ddd.doc
a197 8101 aaa/bbb/ccc/
ddd.doc

Обратите внимание, что группа 0 всегда будет соответствовать целиком.

0 голосов
/ 26 февраля 2020

Это должно работать

import re

string="a197 8101 aaa/bbb/ccc/ddd.doc"
result = re.findall(r'\w+\.\w+$', string)
print(result)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...